# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# JSONToSHP.py
# Created on: 2014-09-01 22:00:00.00000
#
# Description:
# --------------------------------------------------------------------------- import os
import json
import arcpy jsonFile='E:/New Text Document.txt'
arcpy.env.workspace = "E:/output"
outpath = "E:/output"
outname = os.path.split(jsonFile)[1].split('.')[0] + ".shp"
print outname
fileObject = open(jsonFile, 'r')
jsonText = fileObject.read()
fileObject.close()
featureSet = json.loads(jsonText)
geometryType = featureSet["geometryType"] #
geometry_type = "POINT"
if geometryType == "esriGeometryPolygon":
geometry_type = "POLYGON"
elif geometryType == "esriGeometryPolyline":
geometry_type = "POLYLINE"
elif geometryType == "esriGeometryPoint":
geometry_type = "POINT"
elif geometryType == "esriGeometryMultiPoint":
geometry_type = "MULTIPOINT" # Execute CreateFeatureclass
arcpy.CreateFeatureclass_management(outpath, outname, geometry_type)
#
featureShape = outpath + "/" + outname
fields = featureSet["fields"]
fieldValid = [] #原属性名称
fieldValidLayer = ["SHAPE@"] #新属性名称
for field in fields:
fieldName = field["name"]
fieldType = field["type"]
if fieldName.lower() != 'objectid' and fieldName.lower() != 'shape_length' and fieldName.lower() != 'shape_area' and fieldName.lower() != 'fid':
fieldValid.append(fieldName)
if len(fieldName)>10:
fieldName = fieldName[0:9]
fieldValidLayer.append(fieldName)
if fieldType=="esriFieldTypeInteger":
arcpy.AddField_management(featureShape, fieldName, "LONG")
elif fieldType=="esriFieldTypeSmallInteger":
arcpy.AddField_management(featureShape, fieldName, "LONG")
elif fieldType=="esriFieldTypeDouble":
arcpy.AddField_management(featureShape, fieldName, "DOUBLE")
elif fieldType=="esriFieldTypeSingle":
arcpy.AddField_management(featureShape, fieldName, "DOUBLE")
else:
arcpy.AddField_management(featureShape, fieldName, "TEXT", 50)
#
features = featureSet["features"]
cur = arcpy.da.InsertCursor(featureShape, fieldValidLayer)
for feature in features:
attributes = feature["attributes"]
geometry = feature["geometry"]
valueList = []
geojson = {}
if geometryType == "esriGeometryPolygon":
rings = geometry["rings"]
geojson = {
"type": "Polygon",
"coordinates": rings}
elif geometryType == "esriGeometryPolyline":
paths = geometry["paths"]
geojson = {
"type": "MultiLineString",
"coordinates": paths}
elif geometryType == "esriGeometryPoint":
geojson = {
"type": "Point",
"coordinates": [geometry["x"], geometry["y"]]} polygon = arcpy.AsShape(geojson)
valueList.append(polygon) # (arcpy.Polygon(rings)) for field in fieldValid:
valueList.append(attributes[field])
cur.insertRow(valueList) del cur print "finish !"

将ArcGIS Server的JSON转化为SHP文件的更多相关文章

  1. ArcGIS学习记录—KMZ KML与SHP文件互相转换

      1.在google earth中绘制边界  工具栏中选择"Add Polygon".随意绘制一个多边形.  右击添加的图层名(左侧)保存位置为,选择保存为kmz或kml文件.  ...

  2. ArcGIS 相同要素类的多Shp文件或多要素合并

  3. 【教程】发布NAServer到ArcGIS Server 10.4上[超详细]

    前阵子对ArcGIS API For JavaScript的网络分析有兴趣,但是不知道其数据是如何获取的. 查阅API知道,AJS的网络分析只有三个功能:最短路径(RouteTask).最近设施点(C ...

  4. ArcGIS Server的安装

    1.双击ArcGIS Server安装目录下的Setup.exe. 2.点击“Next”. 3.选择“I accept the license agreement”,点击“Next”. 4.点击“Ch ...

  5. ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层

    今年7月刚刚发布的ArcGIS 10.2为GIS的web开发带来了一个很实在的功能,JSON转要素.以往GIS图层外部数据(如文本数据,数据库数据)动态地写入地图服务中的图层是一件不可想象的事情,如今 ...

  6. ArcGIS Server,rest路径输入要素json 格式描述

    以下内容只测试了简单线, 在ArcGIS Server 的rest路径下可以对服务进行操作,如Query等,这些操作可以输入json 格式要素描述或运行得到即输出json格式要素描述. 如博客:htt ...

  7. DWG/DGN格式导入Arcgis;转化为shp格式;更改地理坐标;导入Google Earth【转】

      其实本来,我就是需要把一个autocad的dwg/dgn格式的东西导入到google earth里面:但是首先我对dwg/dgn格式的东西根本就不熟:其次我拿到的dwg/dgn格式文件是用的HK8 ...

  8. ArcGIS Server导出shp文件

    需求: 在项目中客户提出需要在Web端能够定义条件将后台的数据导出shp文件,并下载. 实现: 基于ArcGIS开发导出矢量数据的服务,用户输入导出数据类型.过滤条件.导出范围等条件,服务能够快速将相 ...

  9. arcgis server 10.1 发布动态图层展示海量及频繁更新的数据步骤

    Arcgis server  发布动态图层及调用动态图层 做这个动态图层功能的原由是 有一个30万的数据需要通过arcgis GP工具转成shp然后渲染加载进地图,原来的做法是遍历生成shp面要素,读 ...

随机推荐

  1. Web端测试和移动端测试

    之前参加的项目有涉及Web端测试和移动端测试,简单的记录下他们之间的区别:   1.记录bug 在Web端可以通过系统自带的截图和QQ截图等方式来截取bug的图片,对于错误的地方可以用工具自带的标识来 ...

  2. Collection、Set、List概念上的区别及关联

    类图如下:

  3. jboss8+EJB3+MDB Queue

    1)在使用jboss8即WildFly进行MDB的试验时首先要在jboss8中配置jms 队列. 我使用的是修改配置文件的方式配置Jms Queue队列. 进入jboss8 安装目录的standalo ...

  4. 《Mysql技术内幕,Innodb存储引擎》——Innodb体系结构

    Innodb体系结构 Innodb存储引擎主要包括内存池以及后台线程. 内存池:多个内存块组成一个内存池,主要维护进程/线程的内部数据.缓存磁盘数据,修改文件前先修改内存.redo log 后台线程: ...

  5. lua的克隆函数,table的深度拷贝

    --深度拷贝Table function DeepCopy(obj) local InTable = {}; local function Func(obj) if type(obj) ~= &quo ...

  6. Docker挂载主机目录Docker访问出现Permission denied的解决办法

    Docker挂载主机目录,访问相应的文件出现Premission denied的权限访问问题,   [root@localhost soft]# docker images REPOSITORY    ...

  7. JQCloud: 一个前端生成美化标签云的简单JQuery插件

    本文原文地址:https://jiang-hao.com/articles/2018/blog-JQCloud.html 因为博客需要,发现了一个生成美化简约风格的标签云的JQuery插件. 官网地址 ...

  8. JVM笔记6-垃圾回收器

    JVM进行垃圾回收时要考虑哪的问题如下: 1.如何判定对象为垃圾对象? 1.引用计数法:在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,引用失效的时候,计数器的值就-1, ...

  9. EF Core 实现多租户

    目录 SAAS 和多租户 多租户数据隔离方案 使用 EF Core 简单实现多租户 单数据库实现 多数据库实现 源代码 参考 SAAS 和多租户 SaaS(软件及服务)区别于其他应用程序的主要特征就是 ...

  10. VM CentOS7 网络配置问题汇总

    0. 前言 在进行配置之前,我们首先需要明确几个概念: I. VM的网络连接方式 ①. 桥接模式(Bridge)   此模式下,VM centOS 在网络中作为一台独立主机存在,它可以访问网络中的任何 ...