В географических информационных системах (Географическая Information Система, короче В области ГИС обработка и анализ геопространственных данных является очень важной задачей. И в Питоне
geopandas
иshapely
— это две очень мощные библиотеки, предоставляющие удобные функции для обработки и предварительного просмотра геопространственных данных. В этой статье рассказывается, как использоватьgeopandas
иshapely
Приходитьчитать、иметь дело с、Визуализацияисохранить географиюShapefileдокумент.
Сначала нам нужно установить geopandas
и shapely
библиотека. Его можно установить с помощью следующей команды:
pip install geopandas
pip install shapely
Сначала нам нужно подготовить Shapefile документ. Здесь мы используем шейп-файл с именем «Граница провинции Хайнань Export_Output.shp». (Ссылка на скачивание файла находится во вложении)。
С помощью следующего кода мы можем использовать
geopandas
в библиотекеread_file
функция для чтения Shapefile файл и сохраните его какGeoDataFrame
Объект:
import geopandas as gpd
# читать Shapefile документ
shp_file = «Граница провинции Хайнань/BoundaryExport_Output.shp провинции Хайнань»
gdf = gpd.read_file(shp_file)
мы можем использовать matplotlib
Библиотека для визуализации карт. С помощью следующего кода мы можем создать график и использовать plot
Функции отображают географические данные на графике:
импортировать matplotlib.pyplot как plt
# Предварительный просмотр карты
рис, топор = plt.subplots(figsize=(10, 10))
gdf.plot(ax=ax)
plt.show()
При этом отображается графическое окно с географическими данными, в котором вы можете наблюдать географические объекты, такие как географические границы, точки, линии или многоугольники.
Следующий раздел кода требует от пользователя предоставить две пары координат (x, y) для определения прямоугольного поля, внутри которого мы очистим географические объекты.
from shapely.geometry import box
# Позвольте пользователю ввести две пары x,y координировать
x1 = float(input("Пожалуйста, введите первую пару x координировать:"))
y1 = float(input("Пожалуйста, введите первую пару y координировать:"))
x2 = float(input("Пожалуйста, введите вторую пару x координировать:"))
y2 = float(input("Пожалуйста, введите вторую пару y координировать:"))
# Очистить графику в указанной области
bbox = box(x1, y1, x2, y2) # Собираем прямоугольную коробку
gdf = gdf.difference(gpd.GeoDataFrame(geometry=[bbox], crs=gdf.crs))
После того, как пользователь вводит две пары координат, мы используем shapely
в библиотеке box
Функция создает прямоугольный блок и использует difference
функция от GeoDataFrame
Географические объекты внутри прямоугольной рамки очищены.
Мы используем тот же метод для визуализации карты после удаления графики в указанной области:
fig, ax = plt.subplots(figsize=(10, 10))
gdf.plot(ax=ax)
plt.show()
При этом отображается обновленное графическое окно, в котором географические объекты в пределах указанной области удалены с карты.
Наконец, мы сохраняем удаленные географические объекты в указанной области как новый шейп-файл:
new_shp_file = «Граница провинции Хайнань/BoundaryExport_Output.shp провинции Хайнань»
gdf.to_file(new_shp_file)
проходить to_file
функция, мы можем GeoDataFrame
Объект сохраняется как новый Shapefile документ.
import geopandas as gpd
from shapely.geometry import box
import matplotlib.pyplot as plt
# читать Shapefile документ
shp_file = «Граница провинции Хайнань/BoundaryExport_Output.shp провинции Хайнань»
gdf = gpd.read_file(shp_file)
# Визуализациякарта
fig, ax = plt.subplots(figsize=(10, 10))
gdf.plot(ax=ax)
plt.show()
# Позвольте пользователю ввести две пары x,y координировать
x1 = float(input("Пожалуйста, введите первую пару x координировать:"))
y1 = float(input("Пожалуйста, введите первую пару y координировать:"))
x2 = float(input("Пожалуйста, введите вторую пару x координировать:"))
y2 = float(input("Пожалуйста, введите вторую пару y координировать:"))
# Очистить графику в указанной области
bbox = box(x1, y1, x2, y2) # Собираем прямоугольную коробку
gdf = gdf.difference(gpd.GeoDataFrame(geometry=[bbox], crs=gdf.crs))
# Предварительный просмотр Карта после удаления графики в указанной области
fig, ax = plt.subplots(figsize=(10, 10))
gdf.plot(ax=ax)
plt.show()
# Удалю графику сохранения как новый Shapefile документ
new_shp_file = «Граница провинции Хайнань/BoundaryExport_Output.shp провинции Хайнань»
gdf.to_file(new_shp_file)
geopandas
、shapely
и matplotlib.pyplot
。
shp_file
,обозначение Shapefile Путь к файлу.gpd.read_file()
функциячитать Shapefile файл и сохраните его как GeoDataFrame
объект gdf
。
gdf.plot()
функция Нанесение географических данных на график,ax=ax
Параметры определяют графическое окно.
plt.show()
Функция отображает графическое окно, показывающее карту предварительного просмотра.
box()
Функция создает прямоугольный блок на основе ввода данных пользователем.,и присвоить его переменной bbox
。
gdf.difference()
Функция, удаленная из исходных географических данных bbox
географические объекты в регионе и сохранять результаты в gdf
середина. 10. Создайте новое графическое окно с размером 10x10 дюйм.
gdf.plot()
функция Отображение обновленных географических данных на графике,ax=ax
Параметры определяют графическое окно.
plt.show()
Функция отображает графическое окно, показывающее карту предварительного просмотра.12. определить переменную new_shp_file
,обозначениесохранить новый Shapefile Путь к файлу.gdf.to_file()
Функция обновит географические данные сохранить как новый Shapefile документ.
Ссылка: https://pan.baidu.com/s/1JLQ2CVFiTVWDeuh3z6HJDw Код извлечения: k7jx