网易首页 > 网易号 > 正文 申请入驻

如何从开放的地理信息系统(GIS)中获取数据——以ArcGis为例

0
分享至

图源:摄图网可商用图片

交通流量是指在选定时间段内通过道路某一地点、某一断面或某一车道的交通实体数或当量数,从车流量的大小可以判定交通的拥挤状况,从而决定当前采取何种交通管理措施,以及对未来交通变化趋势和道路建设规划给出量化的指导依据,因此对交通量的准确检测在交通工程以及未来发展占有十分重要的位置。

交通流量的统计信息,在国内的部分城市是可以在政府网站上查阅的,比如上海市公共数据开放平台就可以查到金山区道路交通流量。数据下载则需要注册和申请。

相比于国内,国外的交通流量数据开放程度更高,以西方某国为例,其每个地方行政单位大多都会公开交通流量数据,部分地方会以年报的形式发布,或者在GIS中提供了原始数据下载。比如下面西方国家的某地的年均交通日流量就提供了csv格式的原始数据下载。

但是,更多的GIS系统对于交通流量的统计数据只提供在线查看,并不提供下载功能。面对这种情况,我们又该如何获取这些数据呢?下面以arcgis系统为例,浅谈一下数据获取问题。

ArcGIS 是一个全面的系统,用户可用其来收集、组织、管理、分析、交流和发布地理信息。作为世界领先的地理信息系统(GIS) 构建和应用平台,ArcGIS 可供全世界的人们将地理知识应用到政府、企业、科技、教育和媒体领域。ArcGIS 可以发布地理信息,以便所有人都可以访问和使用。

首先,我们打开一个arcgis的交通流量地图,选择图层列表,在打开的选项卡中注意到带有数据的图层,本例中我们选择“2020-average annual daily traffic and 10 year historic counts”,按住键盘上的F12,调出开发者工具,在network选项卡中先停止录制再开始录制,这样可以清空已经记录的http报文,专门记录后续操作所触发的网络通信。

之后我们选择“2020-averageannual daily traffic and 10 year historic counts”,图层后的三个点,在菜单中选择按“在属性表中查看”。此时,页面下方就会弹出该图层对应的数据表。这无疑就是我们想要的数据了。

对应观察右边的开发者工具,随着鼠标向下滑动,查看数据表,右边会记录越来越多的报文,且都带有json字样。依次查看这些报文,会发现有一个报文的preview(预览)中依次展开 displayFieldName,fields就可以看到表格中的数据啦。

这里需要简单介绍一下其原理,首先,我们在network中查到的这种带有数据文件属于xhr类型,全称为XmlHttpRequest,用于服务器和浏览器之间交换数据,在建站的时候我们往往用到XmlHttpRequest对象的open和send方法,前者规定请求方式和需要交互的文件位置,以及是否异步上传;如果是get请求,则后者空参,即可将请求发送至服务器。W3CSHOOL上的业务代码示例如下。

xmlhttp.open("GET","ajax_info.txt",true);

xmlhttp.send();

知道了xhr,再来了解json,这是一种基于JavaScript的轻量级数据交换格式。通常用{ },[ ]符号表示数据层级,用 : 表示键和值得关系,用,表示分隔符。显然,这要比用双标签传递数据的xml轻了许多。

综上所述,网站开发时用 XmlHttpRequest将编写好的json文件传给浏览器,用户就可以看到数据啦。当然,传给浏览器的json文件不可能是开发者编写的,而是从网站数据库中查询的结果生成的。知道了原理,我们只需要把这些浏览器请求到的json文件再还原成二维表,就万事大吉了。

回到上面这个文件的headers选项卡,我们确定了报文的请求方式是GET,并且请求地址也知道。仔细分析地址,有两个参数这里需要修改,一个是resultOffset,见名知意,这里指的是查询结果的偏移量.

当然,我们需要从0开始查询,即数据库中的第一条数据。ResultRecordCount为每次查询返回的结果集大小,此处我们试着把它改大一些,比如说1000。最后,我们修改过的请求地址就是:

https://enterprise.firstmap.delaware.gov/arcgis/rest/services/Transportation/DE_Assets/MapServer/11/query?f=json&where=1=1&returnGeometry=false&spatialRel=esriSpatialRelIntersects&outFields=*&orderByFields=OBJECTIDASC&resultOffset=0&resultRecordCount=1000

此时,我们只需要用python的requests库的get刚发向这个地址发送请求,再用请求对象的json方法解析返回的数据就可以了。在下面的代码中,变量data就已经是以字典的形式拿到了1000行交通数据(在名为features的列表中)。

import json

import requests

import pandas

url = "https://enterprise.firstmap.delaware.gov/arcgis/rest/services/Transportation/DE_Assets/MapServer/11/query?f=json&where=1=1&returnGeometry=false&spatialRel=esriSpatialRelIntersects&outFields=*&orderByFields=OBJECTID ASC&resultOffset=0&resultRecordCount=1000"

r =requests.get(url)

data = r.json()

最后,只需要把这个列表存储成二维表并输出即可,这里选用pandas工具代为整理,完整代码如下,整理过程不再赘述。

import json

import requests

import pandas

url = "https://enterprise.firstmap.delaware.gov/arcgis/rest/services/Transportation/DE_Assets/MapServer/11/query?f=json&where=1=1&returnGeometry=false&spatialRel=esriSpatialRelIntersects&outFields=*&orderByFields=OBJECTID ASC&resultOffset=0&resultRecordCount=1000"

r =requests.get(url)

data = r.json()

df = pandas.DataFrame(data["features"][0]["attributes"],index =[0])

df2 = pandas.DataFrame(columns=df.columns)

for d in data["features"]:

df = pandas.DataFrame(d["attributes"],index =[0])

df2 = pandas.concat([df2,df],axis = 0)

print(d)

df2.to_excel("c://Users//Administrator//Desktop//AADT_m_2019.xlsx")

本篇文章为福韵原创内容,未经授权禁止转载

封面来源:摄图网可商用图片

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
老少通吃!领导潜规则女下属,男女主真容曝光,有女子被潜后离婚

老少通吃!领导潜规则女下属,男女主真容曝光,有女子被潜后离婚

番茄说史聊
2024-06-06 22:36:42
三国对以发起总攻,以色列遭地毯式轰炸,多人死亡万人逃难

三国对以发起总攻,以色列遭地毯式轰炸,多人死亡万人逃难

不吃草de兔子
2024-06-05 20:16:33
周大福深圳工厂停产传闻背后,郑家纯两年没了350亿

周大福深圳工厂停产传闻背后,郑家纯两年没了350亿

雷达财经
2024-06-06 23:11:43
多地披露地方行政编制精减比例,从2%到5%不等

多地披露地方行政编制精减比例,从2%到5%不等

澎湃新闻
2024-06-07 07:08:45
张婉婷产后被灼伤,老公宋宁峰好心办坏事,药量用错让妻子受伤

张婉婷产后被灼伤,老公宋宁峰好心办坏事,药量用错让妻子受伤

扒虾侃娱
2024-06-05 20:17:43
4人伤亡!云南突发严重刑案,犯罪嫌疑人已被捕,作案动机曝光!

4人伤亡!云南突发严重刑案,犯罪嫌疑人已被捕,作案动机曝光!

饭桶说史
2024-06-07 05:31:24
王云落发表文章评论区火药味十足:朱婷回来后你的位置会在哪里?

王云落发表文章评论区火药味十足:朱婷回来后你的位置会在哪里?

排球评论员
2024-06-06 19:41:31
山东临沂三位老人瞒着家人组团爬泰山:最年长的82岁,回程时还捡了一车废品

山东临沂三位老人瞒着家人组团爬泰山:最年长的82岁,回程时还捡了一车废品

极目新闻
2024-06-06 13:46:19
最新!医疗行贿从重处罚,最高无期徒刑

最新!医疗行贿从重处罚,最高无期徒刑

全国卫管协会转化医学产业分会
2024-06-06 21:11:46
新型卖淫方式,让人预想不到,但却真实存在!

新型卖淫方式,让人预想不到,但却真实存在!

雪影的情感
2023-11-18 11:51:16
李荣浩暴雨拉大提琴 眼睛睁不开表情崩坏 网友:盲人拉二胡

李荣浩暴雨拉大提琴 眼睛睁不开表情崩坏 网友:盲人拉二胡

达达哥
2024-06-06 23:00:06
客大欺店?名记嘲讽:朱婷就是搅屎棍,还向蔡斌提过分要求引众怒

客大欺店?名记嘲讽:朱婷就是搅屎棍,还向蔡斌提过分要求引众怒

尘语者
2024-06-05 10:34:19
西藏古籍揭秘轮回真相?记载人死49天灵魂不灭,机会只有四次?

西藏古籍揭秘轮回真相?记载人死49天灵魂不灭,机会只有四次?

光头哥的头
2024-01-03 10:16:02
晚开球1.5小时?36强赛收官,中韩战19:00开球,泰国新加坡20:30

晚开球1.5小时?36强赛收官,中韩战19:00开球,泰国新加坡20:30

实事球是
2024-06-06 23:11:12
6月6日俄乌:俄罗斯梦想落空,哈尔科夫成俄军“鸡肋”

6月6日俄乌:俄罗斯梦想落空,哈尔科夫成俄军“鸡肋”

山河路口
2024-06-06 16:58:54
死亡人数被低估!连蚊子都消失了,印度热浪已接近人类生存极限!

死亡人数被低估!连蚊子都消失了,印度热浪已接近人类生存极限!

文雅笔墨
2024-06-06 10:29:31
拜合拉木,中国足球的宝藏!踢得毫无章法,一停二看三传球怎能赢

拜合拉木,中国足球的宝藏!踢得毫无章法,一停二看三传球怎能赢

万视角
2024-06-06 23:25:42
黄健翔谈拜合拉木庆祝:赶紧拿球,继续踢!真是没有集体荣誉感!

黄健翔谈拜合拉木庆祝:赶紧拿球,继续踢!真是没有集体荣誉感!

直播吧
2024-06-06 21:46:26
中国卫星立大功,曝美航母“挨打”后画面,美军被迫解释越描越黑

中国卫星立大功,曝美航母“挨打”后画面,美军被迫解释越描越黑

北纬的咖啡豆
2024-06-05 18:50:16
星海音乐学院院长蔡乔中调任广东省社科院副院长,保留正厅级

星海音乐学院院长蔡乔中调任广东省社科院副院长,保留正厅级

澎湃新闻
2024-06-06 16:36:30
2024-06-07 10:14:44
福韵小福妹
福韵小福妹
整合情报干货、提供商业调查
64文章数 29关注度
往期回顾 全部

科技要闻

马斯克创造人类历史,SpaceX星舰试飞成功

头条要闻

少年目睹爷爷被殴打后跳河身亡 打人者被判九年十个月

头条要闻

少年目睹爷爷被殴打后跳河身亡 打人者被判九年十个月

体育要闻

国足进球功臣捂脸沮丧 伊万表情凝重

娱乐要闻

看这场笑话,经过王一博同意了吗!

财经要闻

身陷退市股的投资者:我的钱瞬间没了

汽车要闻

2025年将推10款新车 长安启源7个月累销破10万

态度原创

房产
游戏
艺术
亲子
军事航空

房产要闻

震撼!8800亩存量宅地清单曝光!未来的三亚楼市,太炸裂!

曝微软正重制初代《光环》!或考虑在PS5平台发布

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

亲子要闻

网友展示小女孩走下地铁的一幕,穿马面裙的小女孩气质瞬间拉满!

军事要闻

白宫发表多国联合声明 要求哈马斯立即接受停火协议

无障碍浏览 进入关怀版