python计算两个多变形交集的面积,GPS坐标文件转GeoJSON

1.Geopandas的安装:

在安装Geopandas之前,需要依次安装numpy,pandas,shapely,fiona,six,pyproj,在命令行中输入pip install 上述库的名字,按照提示进行安装。

如果pip直接安装失败,则采用手动安装的形式,需要浏览网站Python Extension Packages for Windows – Christoph Gohlke  https://www.lfd.uci.edu/~gohlke/pythonlibs     寻找合适的版本进行下载,有32位和64位以及python2和3的不同版本

找到相对应的whl文件,以管理员权限打开命令行,在命令行中找到whl文件所在的位置,输入pip install whl文件全名进行安装

以上库安装成功后,可以直接安装geopandas库,在命令行中输入pip install geopandas,至此环境配置成功,可以在python自带的IDLE代码编辑器中编写运行代码。

2.Geopandas的使用

一切第三库的最好学习材料都是官方文档,geopandas也不例外(http://geopandas.org/)。

这里我们来写一个计算两个多变形交集的面积的代码

import pandas as pd
import matplotlib
import geopandas as gpd
import geopandas.geoseries
from shapely.geometry import Polygon
p1 = Polygon([[-122.5, 45.48565],
[-122.801742, 45.5],
[-122.82, 45.6],
[-122.584762, 45.691],
[-122.4, 45.48]])
p2=Polygon([
  [-122.520217, 45.535693],
  [-122.64038, 45.553967],
  [-122.720031, 45.526554],
  [-122.669906, 45.507309],
  [-122.723464, 45.446643],
  [-122.532577, 45.408574],
  [-122.487258, 45.477466]
  
])
p1box = Polygon([[p1.bounds[0],p1.bounds[1]],
[p1.bounds[0],p1.bounds[1]],
[p1.bounds[2],p1.bounds[1]],
[p1.bounds[2],p1.bounds[3]],
[p1.bounds[0],p1.bounds[3]]
])

p2box = Polygon([[p2.bounds[0],p2.bounds[1]],
[p2.bounds[0],p2.bounds[1]],
[p2.bounds[2],p2.bounds[1]],
[p2.bounds[2],p2.bounds[3]],
[p2.bounds[0],p2.bounds[3]]
])
p3=p1box&p2box
g = gpd.GeoSeries([p1, p2,p1box,p2box])
g.plot()
g1 = gpd.GeoSeries([p1box,p2box,p3])
g1.plot()
print(p3.area)

3.一个csv转geojson的代码

这里推荐一个可以直接将你在地图上画的点线面转换成geojson格式的网站http://geojson.io/

csv数据文件,取名为111.csv

85.95110715,44.5290887
85.95110697,44.5290887
85.95110681,44.52908871
85.95110669,44.52908869
85.95110649,44.52908872
85.95110639,44.52908872
85.95110605,44.52908888
85.95110581,44.52908881
85.95110588,44.52908914
85.9511069,44.52908928
85.95110757,44.52908942
85.95110827,44.52908967

转换代码

import numpy as np
from shapely.geometry import LineString  
import geopandas as gdb
b=np.loadtxt(r"D:\111.csv",delimiter=",")
s=LineString(b)
g=gdb.GeoSeries(s)
g=g.to_json()
f = open(r'D:\111.geojson', 'w')
f.write(g)
f.close()

后续我将继续整理其他python在GIS和遥感中的应用

转载自:https://blog.csdn.net/qq_912917507/article/details/81094435

You may also like...