Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Namingm和geodataframe对英文地址的全局点进行反向地理编码_Python_Geopandas_Reverse Geocoding_Nominatim - Fatal编程技术网

Python 使用Namingm和geodataframe对英文地址的全局点进行反向地理编码

Python 使用Namingm和geodataframe对英文地址的全局点进行反向地理编码,python,geopandas,reverse-geocoding,nominatim,Python,Geopandas,Reverse Geocoding,Nominatim,我是编程、stackoverflow、python和地理空间的新手!我正在玩一个13行2列的小型csv数据集——纬度和经度。我正在尝试反转地理编码并获得英文地址 import shapely import geopandas as gpd import os import geopy from geopy.geocoders import Nominatim from geopy.extra.rate_limiter import RateLimiter # for the progress

我是编程、stackoverflow、python和地理空间的新手!我正在玩一个13行2列的小型csv数据集——纬度和经度。我正在尝试反转地理编码并获得英文地址

import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw
我的数据集-

 Longitude Latitude
54.34      24.47
55.6       24.78
16.36      48.2
151.21    -33.87
4.36       50.85
50.57      26.21
-43.24    -22.92
-49.05    -22.34
-114.07    50.91
8.54       47.41
-70.52    -33.39
116.17     39.92
116.51     39.79
import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw
我尝试了两种方法来反转地理编码。我每次都会出错

import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw
1) 首先,我创建了一个“坐标”列并使用该列

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 
location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw
I get-ValueError:必须是坐标对或点

import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw
2) 由于上述错误,我创建了一个geodataframe并使用了geometry列。将创建几何体列(data_gdf.head())

import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw
然而,我得到一个错误- getTypeError:无法创建点实例

import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw
总而言之——

import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw
封锁期间我的目标是学习/理解地理空间场景。我从免费的在线资源中学习。我没有老师/导师来帮助我纠正错误。任何指点都将不胜感激。谢谢

import shapely
import geopandas as gpd
import os
import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

# for the progress bar
from tqdm import tqdm, tqdm_notebook   
# instantiate
tqdm.pandas(tqdm_notebook)

# get the csv data and convert to geodataframe
csv = os.path.join (data_folder,filename)
data = pd.read_csv(csv)

data['coordinates'] = '{},{}'.format(data['Latitude'], data['Longitude']) 

data_gdf = gpd.GeoDataFrame(data, geometry = gpd.points_from_xy(data['Longitude'],data['Latitude']))
data_gdf.crs = 'EPSG:4326'

# reverse geocode
geo_service = Nominatim (user_agent = "Reverse Geocoding", timeout=10)
reverse_geocode = RateLimiter (geo_service.reverse, min_delay_seconds=0.001)

#location = reverse_geocode ((data['coordinates'].progress_map(reverse_geocode)), addressdetails = True)
location = reverse_geocode ((data_gdf['geometry'].progress_map(reverse_geocode)), addressdetails = True)
location.raw