• geojson数据结构
  • geojson作图方法
  • geojson与pandas

https://blog.exploratory.io/visualizing-geospatial-data-with-your-own-geojson-f96dde0f6296​blog.exploratory.io

数据结构

GeoJSON是用于表示地理对象的格式。 它与常规JSON不同,因为它支持几何类型,例如:Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon和GeometryCollection。

使用GeoJSON,使可视化瞬间变得更加容易,您将在后面的部分中看到。 这主要是因为GeoJSON允许我们将集合的几何数据类型存储在一个中央结构中。

GeoPandas是一个Python模块,用于通过扩展Python模块Pandas使用的数据类型来简化在python中的地理空间数据,以允许对几何类型进行空间操作。 如果你不熟悉Pandas,请查看其教程。

GeoJSON 是用于描述地理空间信息的数据格式。GeoJSON 不是一种新的格式,其语法规范是符合 JSON 格式的,只不过对其名称进行了规范,专门用于表示地理信息。

GeoJSON 的最外层是一个单独的对象(object)。这个对象可表示:

几何体(Geometry)。
特征(Feature)。
特征集合(FeatureCollection)。
最外层的 GeoJSON 里可能包含有很多子对象,每一个 GeoJSON 对象都有一个 type 属性,表示对象的类型,type 的值必须是下面之一。

Point:点。
MultiPoint:多点。
LineString:线。
MultiLineString:多线。
Polygon:面。
MultiPolygon:多面。
GeometryCollection:几何体集合。
Feature:特征。
FeatureCollection:特征集合。

通常,GeoPandas缩写为gpd,用于将GeoJSON数据读入DataFrame。 下面你可以看到我们打印出了五行GeoJSON DataFrame:

{"type": "FeatureCollection","features": [/*表示地图上一个点*/{"type": "Feature","properties": {},"geometry": {"type": "Point","coordinates": [117.24609374999999,36.65079252503471]}},/*表示地图上一条线段*/{"type": "Feature","properties": {},"geometry": {"type": "LineString","coordinates": [[117.24599450826645,36.65120999361623],[117.24690914154054,36.65124657580678],[117.24694132804869,36.65100341150826],[117.24670529365538,36.650695689215624],[117.24620908498764,36.65059024562966]]}},/*表示地图上一个多边形(三角形,正方形,长方形....等等)*/{"type": "Feature","properties": {},"geometry": {"type": "Polygon","coordinates": [[[117.15253829956055,36.67089730689858],[117.14584350585938,36.658917692387114],[117.16318130493163,36.64721167063527],[117.17554092407227,36.65313376288551],[117.18034744262694,36.66773046368491],[117.17348098754883,36.677643625245274],[117.15322494506836,36.692786266889456],[117.13193893432617,36.68397636535661],[117.15047836303711,36.68012171607383],[117.15253829956055,36.67089730689858]]]}}]}

由以上格式可以发现,每一个对象都有一个成员变量 coordinates。如果 type 的值为 Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon 之一,则该对象必须有变量 coordinates。

如果 type 的值为 Feature(特征),那么此特征对象必须包含有变量 geometry,表示几何体,geometry 的值必须是几何体对象。此特征对象还包含有一个 properties,表示特性,properties 的值可以是任意 JSON 对象或 null。例如:

{
"type": "Feature",
"properties": {
"name": "北京"
},
"geometry": {
"type": "Point",
"coordinates": [ 116.3671875, 39.977120098439634]
}

如果 type 的值为 GeometryCollection(几何体集合),那么该对象必须有变量 geometries,其值是一个数组,数组的每一项都是一个 GeoJSON 的几何对象。如果 type 的值为 FeatureCollection(特征集合),则该对象必须有一个名称为 features 的成员。features 的值是一个数组,数组的每一项都是一个特征对象。

Geopandas操作Geojson

!pip3 install geopandas

!pip3 install geojsonio

# 定位到.geojson文件
import os
print(os.getcwd())
os.chdir("/content/drive/My Drive/Colab Notebooks")
os.chdir("/content/drive/My Drive/Colab Notebooks/EBOV/Data")
print(os.getcwd())

import geopandas as gpd
states = gpd.read_file('location_data_v3.geojson')
print(states.head())
print(states[0:])
print(states.shape)

绘制geojson地图

方法一: 软件

方法二:geopandas

关于我们将要使用的库,GeoPandas允许读取和处理地理空间数据,而Matplotlib可以绘制数据。GeoPandas依赖于与python-gdal包装器相同的基本原理,但是它不是读取地理空间图像并返回NumPy数组,而是返回Pandas Series和DataFrames,这通过提供对Pandas API函数的访问使处理这种类型的数据更加容易。

我们首先需要导入geopandas和matplotlib:

pip install pysal==1.13.0

import geopandas as gpd
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['figure.figsize'] = (20, 10)# load our two GeoJSON files
df_places = gpd.read_file('places.geojson')
df_admin = gpd.read_file('admin.geojson')# 对于城市的边界多边形,无需任何处理即可直接绘制出来ax = df_admin.plot(color='green')# 请注意,我们保留了由图返回的变量的副本,因为我们打算在接下来的步骤中用城镇名称注释生成的多边形。
# 我们将遍历DataFrame位置中的所有条目,并绘制(ax.annotate(…))“ geometry”列设置的地理位
# 置处的城镇名称。为简单起见,我们将自己限制在人口超过10,000的城镇标签上:
for idx, row in df_places.iterrows():if row['population'] > 10000:coordinates = row['geometry'].coords.xyx, y = coordinates[0][0], coordinates[1][0]ax.annotate(row['name'], xy=(x, y), xytext=(x, y))# 我们通过在多边形上绘制城镇位置(下面用红色/白色小圆圈表示)。提供给plot()方法的参数值'OrRd'
# 是matplotlib 颜色图的名称,它基本上是从白色(较低值)到红色(较高值)的渐变。决定我们绘制点的
# 红色饱和度的列是填充列。给出最满意结果的choropleth分类方案是分位数方案。请注意,使用此方案需要
# PySAL(pip install pysal)df_places.plot(ax=ax, column='population', cmap='OrRd')

参考:

https://medium.com/@h4k1m0u/plot-a-geojson-map-using-geopandas-be89e7a0b93b​medium.comhttps://medium.com/@maptastik/remote-geojson-to-geodataframe-19c3c1282a64​medium.comGEOJSON标准格式学习​www.jianshu.com

geojson地图_Geojson地图pandas数据帧相关推荐

  1. geojson地图_PowerBI地图应用之形状地图

    PowerBI中有一个隐藏的图表,那就是形状地图.在使用这个功能之前需要先将其开启,然后才能使用. 开启形状地图 依次点击"文件"."选项",弹出"选 ...

  2. Android中使用WebChromeClient显示Openlayers加载本地GeoJson文件显示地图(跨域问题解决)

    场景 Openlayers中加载GeoJson文件显示地图: Openlayers中加载GeoJson文件显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面加载显示GeoJso ...

  3. 使用three.js + geojson 完成广西地图的绘制(上篇)

    一.效果如下: three.js + geojson 绘制广西地图 二.事先准备好要使用的数据 首先要准备好广西地图的geojson数据,可以通过阿里云的Data.GeoAtlas地理小工具获取想要的 ...

  4. echarts地图学习(使用geoJson数据绘制地图)

    参考文档 使用echarts完成中国省市区县镇地图展示 echarts地图(中国地图展示各省数据) echarts实现中国地图区域分布图 vue + echarts 利用echarts中的map地图中 ...

  5. Openlayers中加载GeoJson文件显示地图

    场景 Openlayers下载与加载geoserver的wms服务显示地图: Openlayers下载与加载geoserver的wms服务显示地图_BADAO_LIUMANG_QIZHI的博客-CSD ...

  6. 视频教程-Threejs GeoJSON离线3D地图-JavaScript

    Threejs GeoJSON离线3D地图 以特邀嘉宾身份参加多起大型web前端技术分享会,5年纯前端经验,多个大型web项目经验,JS全栈工程师,现任一家大数据公司任web前端部门经理.开源项目MT ...

  7. python三维图形渲染 地图_Python地图可视化三大秘密武器

    Python地图可视化库有大家熟知的pyecharts.plotly.folium,还有稍低调的bokeh.basemap.geopandas,也是地图可视化利器. 首先介绍下bokeh bokeh擅 ...

  8. 高德地图使用、echarts地图等地图设置

    1.高德地图使用 前提准备: 1.打开高德地图开方平台,注册账号: https://console.amap.com/dev/key/app 2.创建一个应用,获取key值. 一.引入相关资源 < ...

  9. vue+mapbox实现地图3D地图展示效果

    其中包括了mapbox各种插件的使用包括了全图模式,定位,地图遮挡层,鹰眼地图,地图标注,测量距离.面积.具体代码示例如下: <template><el-container>& ...

最新文章

  1. 数据结构为什么重要?
  2. 在数据科学人才教育中不断前行: 《大数据系统基础A、B》课程实践项目中期答辩顺利举行...
  3. 清华校友陈怡然、杨越组队进军AI芯片市场,成立苹芯科技,最新Pre-A轮斩获近千万美元...
  4. 移植uboot第五步:支持NORFlash
  5. 汇编中的数组分配和指针
  6. 浅谈WebGIS开放数据(矢量数据)
  7. 【Heritrix基础教程之2】Heritrix基本内容介绍
  8. 第五周课程总结实验报告(三)
  9. 利用SQL*Loader将 Excel 数据导出到 Oracle 数据库中
  10. Python Tkinter教程–第1部分
  11. MySQL主从同步的概述_MySQL主从同步原理介绍
  12. =====BJmeter性能测试小接=====
  13. 【转】SQLServer2005中的增强数据类型VARCHAR(MAX)
  14. 关于hive报错expression not in group by key ‘.....‘
  15. Topic modeling made just simple enough
  16. mysql时间段重叠_MySQL - 如何选择'DISTINCT'重叠时段(日期或数字范围)
  17. web页面播放优酷视频,播放html5视频,兼容ie7 vcastr22.swf播放
  18. 基于stm32的模拟楼道光控开关的实验
  19. 《中华人民共和国数据安全法》解读(3)
  20. Spring Boot配置统一格式Result返回值(一)

热门文章

  1. python怎么输入两个数然后求差值_python两个日期之间天差值获取
  2. ic 卡获取帐号apdu指令_非接触IC卡片APDU指令系统介绍..docx
  3. python爬取的内容不是中午_大年初六中午,全国各区县哪里最冷?
  4. MFC中给单文档程序添加背景图片
  5. art.dialog弹出框后再根据其内部iframe的大小调整大小
  6. C++学习之路 | PTA乙级—— 1064 朋友数 (20 分)(精简)
  7. sql无法写入mysql_无法通过写入mysql数据库pandas.to\u sql使用sqlalchemy,但不能通过没有pandas的sqlalchemy...
  8. java 枚举可以循环吗_(转载)java 枚举 循环遍历以及一些简单常见的使用
  9. java终结者,动态语言是否会成为JAVA的终结者?
  10. [数据库]-----记一次mysql分库的操作(冷热分离)