项目需要实现出租车定位数据的分区,而这个区往往是不规则的,大小并不一致。之前这方面的操作都是用Arcgis实现,但是由于出租车数据涉及到了时间尺度、大数据,因此还是自己动手编程实现比较合适。
今天尝试了一下使用Geopandas统计shp中的点数量,算是做了一个小小的试验:将成都市用同等大小的规则格网分为25块,其后统计每个区块内POI点的数量,数据如下:
这是Geopandas的介绍:
GeoPandas是一个开源项目,Pandas是Python的一个结构化数据分析的利器,GeoPandas扩展了pandas使用的数据类型,允许对几何类型进行空间操作,其DataFrame结构相当于GIS数据中的一张属性表,使得可以直接操作矢量数据属性表,其目标是使得在python中操作地理数据更方便
一、代码
from geopandas import GeoDataFrame
import numpy as np
# provincedata 为需要统计的点数据
provincedata =GeoDataFrame.from_file('E:\POI分析\chengdu\成都市POI数据\\汽车相关_point.shp')
#regiondata 为区域的分区
regiondata =GeoDataFrame.from_file('E:\POI分析\POI监督分类小样本实验\\fish.shp'