arcgis api for python网盘_ArcGIS API for Python(2)

在前一篇博客里面对ArcGIS API for Python做了简单的介绍。

我的Python学习笔记(5) ArcGIS API for Python

在这一篇文章里面,准备简单的使用此API。用例就是绘制朝阳区出租房价格热力图。

数据准备

准备方式多样,在这里,我为了简单,直接使用实验楼的一段代码,爬了一些样例数据。经过基本的预处理之后,大概是这样的。基本上包括,价格和地址就可以了。价格用来做热力图的字段,地址用来解析经纬度地址。

然后在Jupyter里面看看数据吧。

import pandas as pd

import calendar

renting_path = r'./renting.csv'

renting_df = pd.read_csv(renting_path)

renting_df.head(10)

此处应该画更精美的图的,偷懒了哈。

打开online或者portal

我这里就用Esri北京研发中心的portal作为示例

from arcgis.gis import GIS

from IPython.display import display

portal = GIS('http://yourorganization.maps.arcgis.com', YOUR_USERNAME, YOUR_PASSWORD)

上传csv数据

renting_path = r'./renting.csv'

renting_csv = portal.content.add({}, renting_path)

display(renting_csv)

马赛克处理的是我的用户名,用户名里带有组织名称,我就给它打码了。

发布为FeatureLayer(hosted)

renting_layer = renting_csv.publish()

# you can also use this to find it

renting_layer = portal.content.search('renting', 'feature layer')[0]

display(renting_layer)

这儿可以参考publishing-sd-shapefiles-and-csv这篇文章。再结合ArcGIS REST API的相关规范,就不难写好参数。

我这里图简单,经纬度字段直接使用系统默认可以支持的,所以不用在publish的参数里面指定。

地理编码/解码

这一节,我失败了。。

代码如下

import arcgis

single_line_address = "beijing"

geocoders = arcgis.geocoding.get_geocoders(portal)

#geocoders

beijing = arcgis.geocoding.geocode(address=single_line_address, geocoder=geocoders[0])

beijing

返回值是空: beijing = []

不过Esri自带的GeoCoder对于中国地址支持得并不好。可以使用国产API。由于文章的重点并不在意这儿,所以我使用了最简单的Python Geocoder package. 代码大概是这样的:

import geocoder

rlt = geocoder.google(address).json

if 'lng' in rlt:

return rlt['lng'], rlt['lat']

绘制热力图

map = portal.map('Beijing', 11)

map.add_layer(renting_layer, {"renderer" : "HeatmapRenderer", "opacity" : 0.75, "field" : "price"})

map

这里主要爬的是东面的数据做一个演示。所以有数据缺失的情况。

后续还准备使用Esri的空间分析功能,以及智能制图功能来渲各种图,以及进行空间分析的。但是精力有限。本次实验到此结束。下次会使用更好的数据,来做进一步的实验。

就我目前的使用体验来看,主要是觉得文档和API的版本有脱节的现象,使用起来有些不方便。如果对于Esri的online,portal,rest api规范不太熟悉的话,会有一些概念难以理解,一些参数不知道该如何设置。但是从代码的架构,代码风格来看,再过一段时间,必然会非常非常火。(2018年1月3日18:16:14)

转载自:https://blog.csdn.net/uninterrupted/article/details/78963948

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值