(1)读、写、看
gdf = geopandas.GeoDataFrame.from_file("shp文件路径", encoding='gb18030')
gdf = geopandas.read_file("package.gpkg", layer='countries')
gdf = geopandas.read_file("shp文件路径")
gdf.head()
gdf.plot()
gdf.show()
gdf.to_file("countries.geojson", driver='GeoJSON')
gdf.to_file("countries.shp")
(2)遍历
for i in range(0, len(gdf) ):
geo = gdf.geometry[i]
name = gdf.NAME[i]
(3)索引
(4)其他
tmp_gdf = gdf.to_crs(crs)
new_gdf = gdf1.to_crs(gdf2.crs)
df = df.to_crs({'init': 'epsg:32650'})
df['area'] = df.apply(lambda row: row.geometry.area, axis=1)
new_df = df1.append(df2)
(1)简单创造、构造空间属性、添加其他属性
from shapely.geometry
import Polygon;
from geopandas import GeoSeries,GeoDataFrame
p1 = Polygon([(0, 0), (1, 0), (1, 1)])
p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
g = GeoSeries([p1, p2, p3])
g.show()
g.buffer(0.5)
g.boundary
g.centroid
gdf = GeoDataFrame({'属性名' : [1, 2, ..]}, geometry=g)
【GeoPandas】主要包含两个数据结构,即GeoSeries和GeoDataFrame
空间数据主要由两部分组成,属性数据和空间属性。属性数据即是shp中的属性表,空间属性即为shp中每个单元的几何形状。
1.【GeoSeries】用GeoSeries表示空间属性(即geometry)。
2.【GeoDataFrame】可以把GeoDataFrame理解为shp的属性表,但比shp的属性表多一列,这一列就是空间数据(即GeoSeries)
【GeoSeries】GeoSeries只管理空间属性,不包含GeoDataFrame中的其他属性。主要包括:点/多点、线/多线、面/多面
(1)方法和属性
GeoSeries.area
GeoSeries.bounds
GeoSeries.length
GeoSeries.geom_type
GeoSeries.to_crs(src)
GeoSeries.plot()
GeoSeries.distance(other)
GeoSeries.centroid()
GeoSeries.representative_point()
GeoSeries.exterior
GeoSeries.interior
(2)谓词
GeoSeries.is_empty
GeoSeries.is_ring
GeoSeries.is_simple
GeoSeries.is_valid
GeoSeries.almost_equals(other[,decimal=6])
GeoSeries.contains(other)
GeoSeries.crosses(other)
GeoSeries.disjoint(other)
GeoSeries.equals(other)
GeoSeries.intersects(other)
GeoSeries.touches(other)
GeoSeries.within(other)
(3)不常用
GeoSeries.xticks(rotation = 90)
【GeoDataFrame】包含GeoSeries的表格数据结构
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world.head()
world.plot()
world = world.rename(columns={'geometry': 'borders'}).set_geometry('borders')
world['centroid_column'] = world.centroid
world = world.set_geometry('centroid_column')
【GeoPandas投影】基于proj4
【GeoPandas支持的坐标系表达方式】
1.+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
2.+init=epsg:4326
【常用坐标系代码EPSG】查看全部坐标系代码请点我;坐标系Wkid详细介绍;投影坐标Wkid详细介绍
- WGS84 Latitude/Longitude
"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
或者是"+init=epsg:4326"
- UTM Zones (North)
"+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"
- UTM Zones (South)
"+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs +south"
GeoDataFrame.crs
my_geoseries.crs = {'init' :'epsg:4326'}
world = world.to_crs({'init': 'epsg:3395'})
world.slow()
world = world[(world.pop_est>0) & (world.name!="Antarctica")]
world['gdp_per_cap'] = world.gdp_md_est / world.pop_est
world.plot(column='gdp_per_cap')
world.plot(column='gdp_per_cap',cmap='OrRd')
base = world.plot(color='white', edgecolor='black');cities.plot(ax=base, marker='o', color='red', markersize=5);
ax = world.plot(color="read")
gdf2.plot(ax=ax, color="green")
base.set_title("WGS84 (lat/lon)")
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
cities = geopandas.read_file(geopandas.datasets.get_path('naturalearth_cities'))
country_shapes = world[['geometry', 'iso_a3']]
country_names = world[['name', 'iso_a3']]
country_shapes.head()
country_names.head()
country_shapes = country_shapes.merge(country_names, on='iso_a3')
country_shapes.head()
cities = geopandas.read_file(geopandas.datasets.get_path('naturalearth_cities'))
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
country_shapes = world[['geometry', 'iso_a3']]
country_names = world[['name', 'iso_a3']]
countries = world[['geometry', 'name']]
countries = countries.rename(columns={'name':'country'})
countries.head()
cities.head()
cities_with_country = geopandas.sjoin(cities, countries, how="inner", op='intersects')
cities_with_country.head()
基于shapely第三方库
GeoSeries.buffer(distance, resolution=16)
GeoSeries.boundary
GeoSeries.centroid
GeoSeries.convex_hull
GeoSeries.envelope
GeoSeries.unary_union
GeoSeries.simplify
GeoSeries.rotate
GeoSeries.scale
GeoSeries.skew
GeoSeries.translate
newdf = geopandas.overlay(df1, df2, how='intersection', make_valid=True, use_sindex=None)
【安装】先安装 GDAL,Fiona, pyproj , Shapely等依赖包l,再利用pip install geopandas
安装
(1)保存shp文件,字段成乱码
GeoDataFrame.to_file('D:\tmp.shp', encoding="utf-8")
【相关链接】
1.GeoPandas官方文档
【学习链接】
1.使用Python实现子区域数据分类统计
2.GeoPandas官方中文文档–译著
3.GeoPandas随笔
在实际的空间数据分析过程中,数据可视化只是对最终分析结果的发布与展示,在此之前,根据实际任务的不同,需要衔接很多较为进阶的空间操作,本文就将对geopandas中的部分空间计算进行介绍。
GeoPandas是一个开源项目,可以更轻松地使用python处理地理空间数据。
GeoPandas扩展了Pandas中使用的数据类型DataFrame,允许对几何类型进行空间操作。
GeoPandas的目标是使在python中使用地理空间数据更容易。它结合了Pandas和Shapely的能力,提供了Pandas的地理空间操作和多种Shapely的高级接口。GeoPandas可以让您轻松地在python中进行操作,否则将需要...
本文主要介绍GeoPandas的使用要点。GeoPandas是一个Python开源项目,旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型,并使用matplotlib进行绘图。GeoPandas官方仓库地址为:GeoPandas[1]。GeoPandas的官方文档地址为:GeoPandas-doc[2]。本文主要参考GeoPandas Examples Gal...
geopandas是建立在GEOS、GDAL、PROJ等开源地理空间计算相关框架之上的,类似pandas 语法风格的空间数据分析 Python 库,其目标是尽可能地简化 Python 中的地理空间数据处理,减少对 Arcgis 、 PostGIS 等工具的依赖,使得处理地理空间数据变得更加高效简洁,打造纯 Python 式的空间数据处理工作流。本系列文章就将围绕 geopandas 及其使用过程中涉及到的其他包进行系统性的介绍说明,每一篇将尽可能全面具体地介绍 geopandas 对应.....
黄河流域河网shp格式矢量数据;
黄河流域河网shp格式矢量数据;
数据来源于DEM提取获得,源DEM数据使用格式为ASTER GDEM V3版本,分辨率为30米的DEM数据,通过计算流向、流量阈值等从DEM数据中 提取得到河网矢量数据;
黄河流域河网矢量数据格式为shapefile(shp)格式,数据采用WGS-84坐标系;
该数据包含了黄河流域上中下游整个流域的河网矢量数据,较为完善;
可用于实验分析和科研计算等方面。
一、什么是geojson?
GeoJSON是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法的地理空间信息数据交换格式。GeoJSON支持点、线、面、多点、多线、多面和几何集合等几何类型。GeoJSON里的特征包含一个几何对象和其他属性,特征集合表示一系列特征。本质上,geojson还是json,是一个字符串数据格式。像下面这样:
{ "type": "Polygon",
"coordinates": [
[ [100.0, 0.0], [101.0, 0.0], [10
环境:python3.6
编译器:Geany
我是一个学GIS的,今天突然被老板喊过去,要求我用python实现读取shp属性表元素并导出到外部txt文件,还要实现“我输入某个编号,就要删除包括编号在内的全部行信息”。好吧,程序媛上线。
目录python读取本地shp属性表内容并进行选择性删除下载第三方库有以下几种方法:实现过程和代码进行删除操作遇到输出中文的情况
下载第三方库有以下几种方法:
环境的搭建就不细说了,第三方库用cmd中的快速安装语句还是