介绍
您在本课程中创建的地图以二维方式描绘了地球表面。但是,正如您所知,世界实际上是三维地球。因此,我们必须使用一种称为地图投影的方法将其渲染为平坦表面。
地图投影不能100%准确。每个投影都会以某种方式扭曲地球表面,同时保留一些有用的属性。例如,
-
等面积投影(例如“兰伯特圆柱等分面积”或“非洲阿尔伯斯等分圆锥”)可保留面积。例如,如果您想计算一个国家或城市的面积,这是一个不错的选择。
-
等距投影(例如“方位角等距投影”)保留距离。这将是计算飞行距离的好选择。
我们使用坐标参考系统(CRS)来显示投影点如何对应于地球上的真实位置。在本教程中,您将了解有关坐标参考系统的更多信息,以及如何在GeoPandas中使用它们。
import geopandas as gpd
import pandas as pd
设置CRS
当我们从shapefile创建GeoDataFrame时,已经为我们导入了CRS。
# Load a GeoDataFrame containing regions in Ghana
regions = gpd.read_file("../input/geospatial-learn-course-data/ghana/ghana/Regions/Map_of_Regions_in_Ghana.shp")
print(regions.crs)
{'init': 'epsg:32630'}
您如何解释?
坐标参考系统由欧洲石油测量集团(EPSG)代码参考。
此GeoDataFrame使用EPSG 32630,通常更称为“墨卡托”投影。 该投影保留了角度(使其对于海上航行很有用)并且使区域略微变形。
但是,从CSV文件创建GeoDataFrame时,必须设置CRS。 EPSG 4326对应于纬度和经度的坐标。
# Create a DataFrame with health facilities in Ghana
facilities_df = pd.read_csv("../input/geospatial-learn-course-data/ghana/ghana/health_facilities.csv")
# Convert the DataFrame to a GeoDataFrame
facilities = gpd.GeoDataFrame(facilities_df, geometry=gpd.points_from_xy(facilities_df.Longitude, facilities_df.Latitude))
# Set the coordinate reference system (CRS) to EPSG 4326
facilities.crs = {'init': 'epsg:4326'}
# View the first five rows of the GeoDataFrame
facilities.head()
在上面的代码单元中,要从CSV文件创建GeoDataFrame,我们需要同时使用Pandas和GeoPandas:
- 我们首先创建一个DataFrame,其中包含具有经度和纬度坐标的列。
- 要将其转换为GeoDataFrame,我们使用gpd.GeoDataFrame()。
- gpd.points_from_xy()函数从纬度和经度列创建Point对象。