地理空间 python 库及其用例之二

地理空间分析涉及具有地理成分的数据的处理、操作和可视化。由于有大量可用的强大库,Python 是一种流行的地理空间分析语言。这些库提供广泛的功能,包括地理编码、地理空间数据操作、空间可视化和空间分析。在本文中,我们将探讨一些使用最广泛的地理空间 Python 库及其用例。从分析人口数据的空间分布到预测自然灾害的影响,地理空间分析在各个领域都有广泛的应用,Python库使其易于实现。到本文结束时,读者将更好地了解这些库的功能以及如何将它们用于您自己的地理空间分析项目。

流行的地理空间 Python 库列表和用例如下:

Fiona:Fiona是一个用于读取和写入地理空间数据文件的 Python 库。

它建立在GDAL 库之上,为许多不同的地理空间数据格式提供支持。以下是如何使用 Fiona 读取 shapefile 的简单示例:

# Open the shapefile using Fiona          
with fiona.open("AUT_rails.shp", "r") as shapefile:          
    # Print the name and geometry of each feature in the shapefile          
    for feature in shapefile:          
        print(feature["properties"])          
        print(feature["geometry"])

       

地理空间 python 库及其用例之二_第1张图片

在此代码中,Fiona 库照常导入。然后,该fiona.open()函数用于以读取模式打开 shapefile。路径作为第一个参数传递给 shapefile,“r”作为第二个参数表示需要读取该文件。

for 循环用于迭代shapefile 中的每个要素。对于每个特征,打印特征的属性(存储在“properties”键下的字典中),以及特征的几何形状(存储在“geometry”键下)。

上面的结果显示了奥地利铁路的详细信息以及表示它们所需的各种坐标。

这只是一个如何使用 Fiona 读取 shapefile 的简单示例。Fiona 还提供了许多用于处理地理空间数据的其他函数和功能,包括将数据写入文件、查询数据等。

Geopandas:Pandas 库的扩展,提供处理地理空间数据的功能。

import geopandas as gpd          
         
# Load shapefile as GeoDataFrame          
gdf = gpd.read_file("AUT_rails.shp")          
         
# Print the first five rows of the GeoDataFrame          
print(gdf.head())          
         
# Plot the GeoDataFrame          
gdf.plot()

地理空间 python 库及其用例之二_第2张图片

.shp 文件的前 5 行和 .shp 文件中存在的铁路网络

在此示例代码中,使用函数将 shapefile作为 GeoDataFrame 加载gpd.read_file()。使用该函数显示 GeoDataFrame 的前五行head(),然后使用该plot()函数绘制 GeoDataFrame。

Shapely :用于对点、线和多边形对象执行几何操作的库。

from shapely.geometry import Point, LineString, Polygon          
         
# Create a Point object          
point1 = Point(0, 0)          
         
# Create another Point object          
point2 = Point(4, 4)          
         
# Create a LineString object          
line = LineString([(0, 0), (1, 1), (2, 2), (4, 4)])          
         
# Check if the line intersects with the point          
print(line.intersects(point1))          
print(line.intersects(point2))          
         
# Create a Polygon object          
polygon = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)])          
         
# Check if the point is inside the polygon          
print(polygon.contains(point1))          
print(polygon.contains(point2))          
         
         
Output:          
True          
True          
False          
False

此代码导入Shapely 库并创建三个不同的几何对象:一个Point、一个LineString和一个Polygon。然后它使用各种Shapely 函数对这些对象执行几何操作。具体来说,它检查 LineString 是否与 Points 相交以及Polygon 是否包含 Points。这些只是可以使用 Shapely 执行的许多操作中的几个示例。

Rasterio :用于读取和写入地理空间栅格数据的库。

import rasterio          
import matplotlib.pyplot as plt          
         
# Open the raster file in read mode          
with rasterio.open('example.tif') as src:          
    # Print the raster metadata          
    print(src.meta)          
         
    # Read the first band of the raster          
    band1 = src.read(1)          
         
    # Plot the raster using matplotlib          
    plt.imshow(band1)          
    plt.show()

地理空间 python 库及其用例之二_第3张图片

使用 rasterio 库显示图像

此代码使用 rasterio 库打开名为“example.tif”的光栅文件并打印光栅的元数据。然后它读取栅格的第一个波段并使用 matplotlib 库绘制它。这有助于可视化栅格数据并了解其特征。

Pyproj:一个用于执行地理空间数据投影和转换的库。

import pyproj          
         
# Define the input and output coordinate systems          
in_proj = pyproj.Proj(init='epsg:4326')   # WGS84 (standard lat/long)          
out_proj = pyproj.Proj(init='epsg:26915') # UTM Zone 15N          
         
# Define a point in the input coordinate system          
x, y = -73.9857, 40.7484          
         
# Convert the point to the output coordinate system          
x_out, y_out = pyproj.transform(in_proj, out_proj, x, y)          
         
# Print the output coordinates          
print(f"Output coordinates: {x_out}, {y_out}")          
         
         
Output:          
         
Output coordinates: 2109179.3873605104, 4688651.3110369155

这段代码演示了如何使用不同坐标系之间的坐标pyproj转换。本例中定义了两个坐标系(和),用于将一个点从输入坐标系转换到输出坐标系。生成的坐标如上所示打印为Output coordinates。WGS84UTM Zone 15Npyproj.transform()

Folium :用于在网络浏览器中创建交互式地图的库。

import folium          
         
# create a map centered on a specific location          
map = folium.Map(location=[37.7749, -122.4194], zoom_start=12)          
         
# add a marker to the map          
folium.Marker(location=[37.7749, -122.4194], popup='San Francisco').add_to(map)          
         
# add a circle to the map          
folium.Circle(location=[37.7749, -122.4194], radius=500, fill=True).add_to(map)          
         
# add a polygon to the map          
folium.Polygon(locations=[[(37.7749, -122.4194), (37.7749, -122.4074), (37.7669, -122.4074), (37.7669, -122.4194)]],          
               fill=True).add_to(map)          
         
# display the map          
map

地理空间 python 库及其用例之二_第4张图片

在此示例中,创建了以某地为中心的地图,并向地图添加了标记、圆和多边形。生成的地图显示在Jupyter 笔记本或单独的浏览器窗口中,具体取决于代码的运行方式。需要注意的是,可以使用 Folium 库提供的各种选项自定义地图的外观及其元素。

         

你可能感兴趣的:(python,信息可视化,数据分析,GIS,地理信息)