问题描述
我有一个熊猫数据框,其中包含一个Shapely几何对象。形状对象(圆形)是根据以下SO Find the intersection between two geographical data points计算的,其中我输入了lat,long和radius。
import pandas as pd
from shapely.geometry import Point
from shapely.ops import transform
import pyproj
from functools import partial
wgs84 = pyproj.Proj('epsg:4326')
def latlonbuffer(lat,lon,radius_m):
proj4str = '+proj=aeqd +lat_0=%s +lon_0=%s +x_0=0 +y_0=0' % (lat,lon)
AEQD = pyproj.Proj(proj4str) # azimuthal equidistant
project = partial(pyproj.transform,AEQD,wgs84)
return transform(project,Point(0,0).buffer(radius_m))
在演示中,我使用了Shapely的质心函数将centroid
列包括在内。
geometry,centroid
polyGON((26.48306 50.09625,26.47916 50.09604..),((26.48307336330026,50.052005610561245))
但是当我将此表转换为geopandas并将其绘制在mplleaflet上
import geopandas as gpd
import mplleaflet
import matplotlib.pyplot as plt
df_gpd = gpd.GeoDataFrame(df)
ax = df_gpd.plot(figsize=(20,20),color='r')
mplleaflet.display(fig=ax.figure)
它将多边形显示在与预期位置不同的位置。
和Google结果:
是由于投影类型的差异造成的问题吗?
编辑:我注意到问题是即使polyGON对象似乎具有经/纬度坐标,在绘图过程中它也会翻转为经/纬度。所以解决方法是制作一个像这样的函数
def flip_xy(geo):
return transform(lambda x,y: (y,x),geo)
并将其应用于几何列。但是问题是,intersects()
之类的Shape函数是否假定经/纬度的顺序正确?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)