task01学习心得

地理数据分析常用工具

  1. shapely
    • Point
    • LineStrings
    • LineRings
    • Polygon
  2. geopandas
  3. Folium

安装

1. GDAL

2. Shapely

3. Finoa

4. pyproj

5. geopandas

一定要按顺序装,否则容易报错
学过Python的朋友都知道使用pip install xxx是最方便的,但是有些第三方库不能使用此方法安装。所以要借助whl文件

  1. 先进入Python Extension Packages for Windows下载whl文件进入后的界面

  2. 第一次进来可能会很懵,不要慌。直接Ctrl+F键搜索需要安装包的名字。如:GDAL
    搜索库名
    可以看到,所有包含GDAL的地方都被高亮了。

  3. 选择与你电脑系统和python版本匹配的whl文件。
    如:本人的是win10 64位 python3.8,所以选择GDAL‑3.2.2‑cp38‑cp38‑win_amd64.whl

  4. 下载后在cmd中,输入pip install 文件名,这里不要手动输入,本人输入的是pip install GDAL 导致安装出错。
    我采用的是在cmd中写dir命令,然后复制名字进行安装。或者直接将下载的文件拖入cmd就可自动输入
    同理,依次安装Shapely、Finoa、pyproj
    最后pip install geopandas

检验是否安装成功

import sys
"geopandas" in sys.modules

返回True

测试一下

import geopandas as gp
import matplotlib.pyplot as plt 
world = gp.read_file(gp.datasets.get_path("naturalearth_lowres"))
world.plot()
plt.show()

世界地图
可以生成地图则证明没问题

使用

1.Shapely

from shapely import geometry as geo
point = geo.Point(0,0) #生成点
point1 = geo.Point(0,1) 
point2 = geo.Point(1,0)
line = geo.LineString([point,point1,point2]) #生成线
point3 = geo.Point(1,1)
geo.GeometryCollection([line,point3]) #生成几何图形集合

alt

# 点到线的垂直距离
point3.distance(line)
# 点到线的最长距离
point3.hausdorff_distance(line)
# 面积
line.area # 线的面积为0
# 坐标范围
line.bounds # 返回(minx, miny, maxx, maxy)
# 长度
line.length
# 几何图形的类型
line.geom_type
# 几何对象的各个坐标
list(line.coords) # 返回[(0.0, 0.0), (0.0, 1.0), (1.0, 0.0)]

# 最小外接矩阵
line.envelope

envelope

# 最小旋转外接矩阵
geo.GeometryCollection([line,line.minimum_rotated_rectangle])

在这里插入图片描述

# 插值
pt_half = line.interpolate(0.5,normalized=True)
geo.GeometryCollection([line,pt_half])

在这里插入图片描述

line.project(pt_half,normalized=True) # project方法与interpolate互逆
返回0.5
ring = geo.polygon.LinearRing([(0,0),(1,1),(1,0)])
ring.length # 长度
ring.area # 因为环的根本是线,所以面积为0

思考:
LineString和LinearRing用起来有什么区别?

Polygon 多边形
polygon1 = Polygon([(0,0),(1,1),(1,0)]) # 生成多边形
print(polygon1.area)
print(polygon1.length)

ext = [(0,0),(0,2),(2,2),(2,0),(0,0)] # 外边
int = [(1,0),(0.5,0.5),(1,1),(1.5,0.5)] # 洞的范围
polygon2 = Polygon(ext,[int]) # ext为有序的point元组,int为内部边距
print(polygon2.area) # ext的面积减去int的面积
print(polygon2.length) # ext的长度加上int的长度

print("\n",polygon2.exterior)
print(type(polygon2.exterior)) # 类型为环,LinearRing
print(np.array(polygon2.exterior))

print(polygon2.interiors)
print(type(polygon2.interiors)) # 类型为环序列,InteriorRingSequence
# print(np.array(polygon2.interiors)) 不能使用该方法获得坐标
polygon2

在这里插入图片描述

2.geopandas

import pandas as pd
import geopandas
import matplotlib.pyplot as plt
world = geopandas.read_file(geopandas.datasets.get_path("naturalearth_lowres"))# GeoDataFrame 
fig,ax = plt.subplots(figsize=(9,6),dpi=100)
world.plot("pop_est",ax=ax,legend=True)

graph

参考资料

  1. Python安装geopandas
  2. geopandas安装心得
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值