geojson地图_Geojson地图pandas数据帧

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

33b5bcc875e575a7f0060a7d1117c671.png
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

88e53263b6378f908c158958f19beea8.png
!pip3 install geojsonio

42f7dda02a1a12d20e309e8845cae709.png
# 定位到.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())

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

8f6d6f4dc3b72f3f5ccde18c4edf285d.png

绘制geojson地图

方法一: 软件

d7f94db9c393a51a23ad6b68e139f6e0.png

cb831c0dd51b0cbccc82333fa17ab909.png

方法二:geopandas

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

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

pip install pysal==1.13.0

60290c27b08c82aeeecc89dcde4566be.png
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')

d9f5d4984a6a1935c1828f006c5dafae.png

180120427a8b776c935cbaa8c9aaa3ca.png

873f5ff5ec1f574148c634769f585e18.png

27aab95fda0d320a7ff7c2dce24246c1.png

参考:

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
29e55f59a8358ce4872f59c55af78cfb.png

8a8ea2cae0ac778fe0dc471fbb16255a.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

views 多个文件夹 netcore_.NET Core 分发打包

由于 .NET Core 现已可用于更多平台,因此了解如何为其打包、命名并进行版本控制将很有用。 这样,无论用户选择在哪里运行 .NET,包维护人员均可以帮助确保获得一致的体验。 本文对以下用户非常有用:尝试从源生成 .NET Core。想要更…

erlang安装_消息中间件(八)- RabbitMQ - 安装

步骤1:erlang步骤2:erlang 安装程序步骤3:配置路径步骤4:运行测试步骤5:安装 rabbitMQ步骤6:配置插件步骤7:重启 rabbitmq步骤8:管理员身份步骤9:重启 rabbitmq步骤10:访问管理界面步骤11:管理界面步骤 1 : erlangrabbitMQ 是基于 erlang 语言开发的,就如同 activem…

ihtml2document能不能根据id获取dom_使用DOM进行XML文件的解析

1. 什么是XML?xml是格式化的纯文本,用于存储数据和格式。2. DOM是什么?DOM是xml的一种解析方法(此外还包括SAX等,此处不提),它将xml文件抽象成为一个树型结构,这棵树个各个树叶就是节…

青茶什么时候拆_为什么日本绿茶那么绿?比中国的高级绿茶还要绿

我们经常可以从电影、电视、动画片、日式抹茶看到日本绿茶所呈现出来的样子,绿的,鲜脆欲滴的绿。到了日本,待客之道泡煎茶,可以更直观的看到煎茶的绿,这种绿是我们在国内不曾见到的绿,中国的高级绿茶也呈现…

单台web服务器性能,单台web服务器如何尽可能的提高网站性能

我觉得首先要选择一个合适的环境,对于大多数php站点来说,运行在lnmp(linuxnginxmysqlphp)环境下是个理想的选择.首先一点linux对比win的优势我就不说了。其次nginx的优势总结起来就是负载均衡,高并发性能优异。这里php采用fastcgi的方式接入n…

如何将dataset中的值赋值给datatable_金融行业实战项目:如何理解业务?

【面试题】下表是某金融App的数据,请结合Excel数据集中的数据完成下列问题(某金融公司面试题,文末有数据下载 )原始数据如下所示:为方便后期分析,我们对数据进行分类。数据通常分为3类:用户数据、行为数据、产品数据。…

css练习题4,复习webpack4之CSS文件代码分割

之前学习过webpack3的知识,但是webpack4升级后还是有很多变动的,所以这次重新整理一下webpack4的知识点,方便以后复习。这次学习webpack4不仅仅要会配置,记住核心API,最好还要理解一下webpack更深层次的知识&#xff0…

minhash算法检索相似文本_基于向量的深层语义相似文本召回?你需要bert和faiss...

在文章大话知识图谱--聊聊智能客服中,我介绍了智能客服系统利用FAQ问答库做自动问答,也就是基于信息检索的自动问答系统。它的一般做法流程是:构建一个大型的FAQ问答库,形式是(question,answer)…

vuex的命名空间有哪些_Python3 命名空间和作用域

命名空间先看看官方文档的一段话:A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。命名…

ajax实现翻书效果,jQuery实现手机版页面翻页效果的简单实例

var page 1;var size 6;var mark 0;var url "{pigcms{:U(Order/index, array(page>d%))}";var commentTpl \去评价\;var template \""))}">\\{store_name}\\\\""))}">\\ \\{create_time}\总价:¥…

抽象类可以生成自己的对象吗_大理石可以自己抛光吗?大理石自己抛光方法解答...

大理石可以自己抛光吗?大理石自己抛光方法解答。大理石只有经过抛光后,表面才会有更好的光泽和质感。具体抛光可以要求大理石抛光团队施工,也可以自己做。那么大理石自己抛光方法是什么呢?下面石大夫为您解答。大理石自己抛光方法…

服务器可以装2个系统吗,云服务器可以装多个系统吗

云服务器可以装多个系统吗 内容精选换一换共享云硬盘是一种支持多个云服务器并发读写访问的数据块级存储设备,具备多挂载点、高并发性、高性能、高可靠性等特点。主要应用于需要支持集群、HA(High Available,指高可用集群)能力的关键企业应用场景&#x…

关卡 动画 蓝图 运行_UE4无缝过场动画

最近有个哥们给我看他们最近在做的一个游戏,其中有这样一段镜头https://www.zhihu.com/video/1171378736917364736运用到了一个很常用的过场方式,就是平时我们所说的无缝过场。过场动画不通过黑屏转换,而是通过运镜来代入。这是一种比较容易实…

个推的appid是指什么_推箱子软件介绍→安卓下最专业的推箱子软件(推箱快手)...

俗语说:工欲善其事必先利其器目前各安卓系统下的应用市场有很多很多推箱子软件,除了soko推箱子软件比较好以外,其余没有任何一款软件是推箱子好手想去使用的,为什么呢?先说说soko这款软件好在哪儿?点推式推…

list转字符串_剑指offer 38——字符串的排列

本题主要在于对回溯的理解,优化时可以结合 java 特性,以及排列的一些知识。原题输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s "abc&…

v5系列服务器后面板不存在以下哪款指示,群晖RS10613xs+ NAS服务器后面板简介

群晖RS10613xs NAS服务器后面板简介群晖RS10613xs NAS服务器后面板简介:NAS服务器的后面板往往承担着数据的输入、输出,电影的输入,网络的传输,容量的扩展,电能的支持以及产品的散热等重要功能,看似简单的后面板往往是…

怎么判断冠词用a还是an_【语法微课堂】英语冠词的用法,学会这4点,轻松玩转a、an、the...

点击上方??蓝色字,轻松关注!Well begun is half done.良好的开端是成功的一半。准备了一下午,终于可以给大家更新了,给大家分享了冠词讲解的视频、音频和文字版,自行取用吧!?冠词讲解视频版(小提示&…

pb自定义控件 事件_Android WebView与下拉刷新控件滑动冲突的解决方法

使用WebView时一般会在外层使用下拉刷新控件如(SwipeRefreshLayout)。但是测试时会发现网页无法上拉,往上滑动就会触发下拉刷新控件的refresh事件。所以这里记录一下解决该问题的办法。1、通过webView.getScrollY() 的值来判断是否滚动到顶部private SwipeRefreshLa…

双路服务器cpu必须型号相同,双路主板存在使用不同型号的cpu之说吗?还是必须使用一模一样相同的cpu型号?...

双路主板不存在使用不同型号的cpu一说, 可以使用不同型号的cpu, 不过参数差别不能过大(例如处理器的架构差别)多路主板就是一种主从结构, 处理器之间是协同工作,由中间的高速总线实现两个处理器的配合,不存在处理器必须…

打开多个界面_如何创建用户界面

CANBusKit,是一款集成汽车总线开发、测试、分析的专业软件工具。本章内容主要介绍如何使用CBK_OpenPanel工具为CANBUSKIT 工程创建用户界面,本工具目前支持Vector的xvp格式的面板文件导入。首先是启动软件(试用版软件只能从CANBusKit软件界面中启动该软件…