# -*- 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. 【BZOJ2082】【POI2010】Divine divisor 假的pollard-rho

    题目大意:给你$m$个数$a_i$,定义$n=\Pi_{i=1}^{m}a_i$.将$n$分解质因数为$\Pi p_i^{k_i} $,$p_i$是质数.请输出$2^{max(k_i)}-1$,以及存 ...

  2. php 常见图片处理函数封装

    <?php /** * 常见图像处理函数的封装 */ class Image{ private $info=[]; private $width;//原始图片宽度 private $height ...

  3. Eclipse无法编译 build无效 没有class文件

    问题原因: 我遇到这个问题的原因是: maven 插件引起的,maven clean或maven build后,经常无法自动编译class(虽然project自动编译了,但是只有包文件夹名,而没有cl ...

  4. Sublime Text 3编辑器的SublimeRPEL快捷键设置

    Sublime Text 3软件由于每次运行程序都要执行:Tools -> SublimeREPL -> Python -> RUN current file 菜单有点麻烦,所以现在 ...

  5. 48位MAC转化为唯一的128位IPV6地址

    根据EUI_64规范,一个MAC地址生成唯一的一个IPV6地址. ①.反转MAC的第七位为1. ②.在24bit后加入FFFE. ③.在最前面加上FE80::. 示例:

  6. python hbase util

    from traceback import format_exc import phoenixdb as pb class Utils(object): def get_db_conn(self, u ...

  7. LeetCode【第1题】Two Sum

    准备刷一刷LeetCode了. 题目: ''' Given an array of integers, return indices of the two numbers such that they ...

  8. Error : Weblogic Maven Plugin deployment WebLogic 12c

    Error : Weblogic Maven Plugin deployment i want to use weblogic-maven-plugin in my maven project in ...

  9. windows server服务器上部署java+tomcat网站域名配置

    如果只是部署java项目的话,可以把IIS删除,然后在服务器上安装jdk tomcat 配置好环境变量,就和你在自己计算机上开发一样,把你的项目war包拷到tomcat下的webapps里(任意目录都 ...

  10. i.mx6 Android5.1.1 build解析

    参考资料:理解 Android Build 系统 把总结放前面: 1. 常用编译命令 make clean 执行清理,等同于:rm -rf out/. make sdk 编译出 Android 的 S ...