1.shpely:
(1)空间数据模型
(2)几何对象的一些功能特性:
和numpy.array相互转换,长度,面积,距离,边界,相交,包含,几何中心,缓冲区,最小旋转外接矩形,插值点,点投影到线的距离,最近点,旋转,缩放。
(3)point:
三种赋值方式
求坐标
(4)linestrings:
通常用DouglasPucker算法来减少点数
(5)linearrings:
和linestrings的不同在于:linestrings是线(不一定闭合),而linearrings是环(一定闭合)
(6)polygon:
多边形,面积不为0,前面两种(即线和环)面积都为0
(7)几何对象关系:
a.contains(b) = b.within(a) 若a的外部没有b或者b至少有一个点在a内部,则返回True
a.crosses(b) 若a和b是内部相交而不是包含关系,则返回True
a.disjoint(b) 若a和b内部和边界都不相交,则返回True
a.intersects(b) 若a和b相交,则返回True
a.convex_hull 返回包含a中所有点的最小凸多边形
a.intersection(b) 返回a与b之间的交集
a.union(b) 返回a与b之间的并集
a.difference(b) 返回补集
asPoint,asLineString,asMultiPoint,asPolygon将numpy数组转化成相应格式
np.array将点转化成numpy格式
2.geopandas:
有geoseries,geodataframe两种数据类型。
3.folium:
可视化
4.kepler.gl:
可视化
支持3种数据格式:CSV,JSON,GeoJSON
5.GeoHash:
将经纬度坐标编码为由数字和字母构成的短字符串(二分法)
注意事项:
(1)由于GeoHash使用Z形曲线来顺序填充空间的,而Z形曲线在拐角处会有突变,这表现在有些相邻的网格的编码前缀比其他网格相差较多,因此利用前缀匹配可以找到一部分邻近的区域,但同时也会漏掉一些。
(2)一个网格内部所有点会共用一个GeoHash值,在网格的边缘点会匹配到可能较远但是GeoHash值相同的点,而本来距离较近的点却没有匹配到。这种问题可以这样解决:适当增加GeoHash编码长度,并使用周围的8个近邻编码来参与,因为往往只使用一个GeoHash编码可能会有严重风险!