【发布时间】:2018-10-02 20:37:17
【问题描述】:
我正在尝试将 shapefile 转换为表示 shapefile 定义的每个点的纬度和经度点列表。使用geopandas 读取文件并使用.plot() 函数将这些点显示为图形,但我想要原始点。我试图遍历geopandas.geometry 中的多边形并将所有点存储在多边形内。我绘制了这些点以测试它们是否准确地表示了该区域,但它们没有。我使用以下代码完成了所有这些操作:
import re
import geopandas as gpd
import matplotlib.pyplot as plt
def geoToList(geodataframe):
points = []
for s in geodataframe.geometry:iq
s = str(s)
s = re.sub('[^0-9., ]+', '', s).split(',')
s = map(lambda x: x.strip(), s)
s = map(lambda x: (float(x.split()[0]), float(x.split()[1])), s)
points.extend(list(s))
return points
habitat = gpd.read_file('desktop/species_19377/species_19377.shp')
#borough = borough.to_crs(epsg=4326)
points = geoToList(habitat)
x = [point[0] for point in points]
y = [point[1] for point in points]
plt.scatter(x, y)
plt.show() #representation of the points in all polygons
habitat.plot() #representtation of the points I want
我想要一些函数,它返回可以绘制的点列表,并且看起来与habitat.plot() 的输出相同
我的下一个想法是将图形存储为图像并根据图形的比例分配像素值纬度和经度值,但我确信这比它需要的更复杂。
任何帮助将不胜感激!
【问题讨论】:
标签: python shapefile geopandas