Start New Discussion within our Software Development Community

Hello,

I want to know addresses of some coordinates, so I use geopy.

my code is

from geopy.geocoders import Nominatim

    def to_degrees(lats, longs):
        lat_deg = lats[0:2]
        lat_mins = lats[2:4]
        lat_secs = int(lats[5:])*60/10000
        lat_msecs = int(lats[5:])*60%10000
        lat_str = lat_deg + u'.'+ lat_mins + str(lat_secs) + str(lat_msecs) 

        lon_deg = longs[0:3]
        lon_mins = longs[3:5]
        lon_secs = int(longs[6:])*60/10000
        lon_msecs = int(longs[6:])*60%10000
        lon_str = lon_deg + u'.'+ lon_mins + str(lon_secs) + str(lon_msecs)
        return [lat_str, lon_str]

    def gpgga():
        data = ser.readline()
        if data[0:6] == "$GPGGA":
            gpgga = nmea.GPGGA()
            gpgga.parse(data)
            lats = gpgga.latitude
            lat_dir = gpgga.lat_direction
            longs = gpgga.longitude
            long_dir = gpgga.lon_direction

            lat_lon = to_degrees(lats, longs)

            p = lat_lon[0] + "," + lat_lon[1]
            geolocator = Nominatim()
            location = geolocator.reverse(p, timeout = None)
            print "p:", p
            print(location.address)

my output is

Latitude:  37.27265020"N & Longitude:  126.56552840"E

but address appears

301, 대부북동 (Daebubukdong), 안산시 (Ansan), 경기(kyungki), 대한민국(S.Korea)

where Latitude: 37.244358, Longitude: 126.583535

How can I fix this problem?? I tried to add and subtract errors but I failed because of different types; unicode(lat_lon) vs float...

as I know, changing unicode to float or float to unicode is impossible.

help me, please..

I changed type to str, float and calculate(latitude - 0.02803, longitude+0.017907) and change type again to unicode.

but result is

301, 대부북동 (Daebubukdong), 안산시 (Ansan), 경기, 대한민국
location.latitude, location.longitude : 37.2915257, 126.578164
Latitude:  37.27256"N & Longitude:  126.565540"E

how can i solve this problem?

This question has already been answered. Start a new discussion instead.