We aren't able to tell you which parts to buy - we're not omniscient (well, most of us aren't).
But we can spark off some ideas of how best to tackle the problem.
From what I understand you have 3 sensors at different locations with a central device which records the data from these sensors.
There is some more information you're going to have to give us for us to give a top-notch answer, such as:
(b = base station, s = sensor)
- What kind of data rate is required to communicate the data in?
Are we talking data that can be transferred at say 56Kbps, or does it require megabits of data?
Some thoughts on what you have given us to work with so far:
WiFi over 2Km
While this is possible, it is not easy. WiFi, in its standard form, can only really cover a few hundred meters at best. With a better aerial you can boost this to maybe 500m. To get the long distances you are talking about you would need a very special aerial - such as a Yagi Array, a Waveguide, or a parabolic dish. All of these are directional, so will only be able to cover a small line-of-sight area.
Note that all "improved range" aerials don't boost the power - they just focus it differently. Omnidirectional ones sacrifice vertical coverage in favour of horizontal coverage. Directional ones focus all the energy into a single beam or cone.
Have you considered other solutions instead of WiFi?
- Use the ISM band at a lower frequency (say 868MHz or 433MHz) that will give a longer range (due to longer wavelength) for the same amount of power.
- Use a third-party carrier. Mobile phone communications are getting cheaper and cheaper. With 3G coverage getting more and more prevalent, what's to stop you having a 3G connection on each sensor and using the internet to transfer the data?