Я пытаюсь преобразовать шейп-файл в список точек широты и долготы, которые представляют каждую точку, определенную шейп-файлом. Чтение файла с помощью 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()
Моя следующая идея состоит в том, чтобы хранить графики в виде изображений и назначать значения широты и долготы пикселям на основе масштаба графика, но я уверен, что это сложнее, чем должно быть.
Любая помощь будет оценена по достоинству!