kaggle地理空间分析-first map<i>
翻译自kaggle教程:https://www.kaggle.com/learn/geospatial-analysis
地理空间分析
创建交互式地图,并发现地理空间数据中的模式。
first map
介绍
在本微型课程中,您将学习处理和可视化地理空间数据或具有地理位置的数据的不同方法。在此过程中,您将为一些实际问题提供解决方案,例如:
- 全球非营利组织应在哪里扩大在菲律宾偏远地区的影响力?
- 濒临灭绝的鸟类紫色马丁在北美和南美之间如何旅行?鸟类正在前往保护区吗?
- 日本哪些地区可能会从额外的地震加固中受益?
- 加利福尼亚州的哪些星巴克商店是下一个星巴克储备烘焙店的理想选择?
- 纽约市是否有足够的医院应对机动车碰撞?这个城市的哪些地区覆盖范围不足?
您还将可视化波士顿市的犯罪情况,检查加纳的卫生设施,探索欧洲顶尖的大学,并跟踪美国有毒化学物质的释放。
在第一个教程中,我们将快速介绍完成此微型课程所需的先决条件。而且,如果您想更深入地复习,我们建议您使用Pandas微课程。
我们还将开始可视化我们的第一个地理空间数据集!
读取数据
第一步是读取一些地理空间数据! 为此,我们将使用GeoPandas库。
import geopandas as gpd
有许多不同的地理空间文件格式,例如shapefile,GeoJSON,KML和GPKG。 我们不会在此微型课程中讨论它们的差异,但重要的是要提到:
- shapefile是您将遇到的最常见的文件类型,并且
- 所有这些文件类型都可以使用gpd.read_file()函数快速加载。
下一个代码单元加载一个shapefile,其中包含有关森林,荒野地区和其他土地的信息,这些信息由纽约州环境保护部负责。
# Read in the data
full_data = gpd.read_file("../input/geospatial-learn-course-data/DEC_lands/DEC_lands/DEC_lands.shp")
# View the first five rows of the data
full_data.head()


如您在“ CLASS”列中看到的,前五行中的每一行都对应于一个不同的森林。
对于本教程的其余部分,请考虑一种情况,其中您想使用此数据来计划周末露营之旅。 您决定创建自己的地图,而不是依赖在线的众包评论。 这样,您可以根据自己的特定兴趣来定制行程。
先决条件
要查看数据的前五行,我们使用了head()方法。 您可能还记得,这也是我们用来预览Pandas DataFrame的工具。 实际上,可以与DataFrame一起使用的每个命令都可以处理这些数据!
这是因为数据已加载到具有(Pandas)DataFrame所有功能的(GeoPandas)GeoDataFrame对象中。
type(full_data)
>geopandas.geodataframe.GeoDataFrame
例如,如果我们不打算使用所有列,则可以选择其中的一个子集。
data = full_data.loc[:, ["CLASS", "COUNTY", "geometry"]].copy()
我们使用value_counts()方法查看不同土地类型的列表,以及它们在数据集中出现的次数。
# How many lands of each type are there?
data.CLASS.value_counts()
>
WILD FOREST 965
INTENSIVE USE 108
PRIMITIVE 60
WILDERNESS 52
ADMINISTRATIVE 17
UNCLASSIFIED 7
HISTORIC 5
PRIMITIVE BICYCLE CORRIDOR 4
CANOE AREA 1
Name: CLASS, dtype: int64
您还可以使用loc(和iloc)和isin选择数据的子集。
# Select lands that fall under the "WILD FOREST" or "WILDERNESS" category
wild_lands = data.loc[data.CLASS.isin(['WILD FOREST', 'WILDERNESS'])].copy()
wild_lands.head()

如果您不熟悉上述命令,建议您将此页面添加书签以供参考,以便您可以根据需要查找命令。 (或者,您可以参加Pandas微课程。)在创建地图之前,我们将在此微课程中使用这些命令来理解和过滤数据。
Create your first map!
我们可以使用plot()方法快速可视化数据。
wild_lands.plot()
> <matplotlib.axes._subplots.AxesSubplot at 0x7fa3aadd7048>

每个GeoDataFrame都包含一个特殊的“几何”列。 它包含我们调用plot()方法时显示的所有几何对象。
# View the first five entries in the "geometry" column
wild_lands.geometry.head()
>
0 POLYGON ((486093.2445 4635308.5855, 486787.235...
1 POLYGON ((491931.5137999998 4637416.256200001,...
2 POLYGON ((486000.2867000001 4635834.4528, 4850...
3 POLYGON ((541716.7752999999 4675243.268100001,...
4 POLYGON ((583896.0428999998 4909643.187000001,...
Name: geometry, dtype: object
尽管此列可以包含各种不同的数据类型,但每个条目通常将是Point,LineString或Polygon。
数据集中的“几何”列包含2983个不同的多边形对象,每个对象对应于上图中的不同形状。
在下面的代码单元中,我们再创建三个GeoDataFrame,其中包含营地位置(点),步行道(LineString)和县界(多边形)。
# Campsites in New York state (Point) 纽约州的露营地(点)
POI_data = gpd.read_file("../input/geospatial-learn-course-data/DEC_pointsinterest/DEC_pointsinterest/Decptsofinterest.shp")
campsites = POI_data.loc[POI_data.ASSET=='PRIMITIVE CAMPSITE'].copy()
# Foot trails in New York state (LineString) 纽约州的步道 (线)
roads_trails = gpd.read_file("../input/geospatial-learn-course-data/DEC_roadstrails/DEC_roadstrails/Decroadstrails.shp")
trails = roads_trails.loc[roads_trails.ASSET=='FOOT TRAIL'].copy()
# County boundaries in New York state (Polygon) 纽约州的县界(多边形)
counties = gpd.read_file("../input/geospatial-learn-course-data/NY_county_boundaries/NY_county_boundaries/NY_county_boundaries.shp")
接下来,我们从所有四个GeoDataFrames创建一个地图。
plot()方法采用(可选)输入几个可用于自定义外观的参数。 最重要的是,为ax设置一个值可确保所有信息都绘制在同一张地图上。
# Define a base map with county boundaries
ax = counties.plot(figsize=(10,10), color='none', edgecolor='gainsboro', zorder=3)
# Add wild lands, campsites, and foot trails to the base map
wild_lands.plot(color='lightgreen', ax=ax)
campsites.plot(color='maroon', markersize=2, ax=ax)
trails.plot(color='black', markersize=1, ax=ax)
> <matplotlib.axes._subplots.AxesSubplot at 0x7fa3aadb3b70>

看来该州东北部将是露营的绝佳选择!
Your turn
刚开始时感觉很复杂,但是您已经学到了足够的知识来进行重要的分析。 在确定菲律宾的非营利组织可以扩展其业务的偏远地区时,自己看看。
浙公网安备 33010602011771号