ArcGIS数据互操作在线处理Word文档下载推荐.docx

上传人:b****1 文档编号:14239589 上传时间:2022-10-20 格式:DOCX 页数:11 大小:573.96KB
下载 相关 举报
ArcGIS数据互操作在线处理Word文档下载推荐.docx_第1页
第1页 / 共11页
ArcGIS数据互操作在线处理Word文档下载推荐.docx_第2页
第2页 / 共11页
ArcGIS数据互操作在线处理Word文档下载推荐.docx_第3页
第3页 / 共11页
ArcGIS数据互操作在线处理Word文档下载推荐.docx_第4页
第4页 / 共11页
ArcGIS数据互操作在线处理Word文档下载推荐.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

ArcGIS数据互操作在线处理Word文档下载推荐.docx

《ArcGIS数据互操作在线处理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ArcGIS数据互操作在线处理Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。

ArcGIS数据互操作在线处理Word文档下载推荐.docx

2014-04-18

刘宇

A

*修订类型分为A-ADDEDM-MODIFIEDD–DELETED

注:

对该文件内容增加、删除或修改均需填写此记录,详细记载变更信息,以保证其可追溯性。

目录

ArcGIS产品支持多种数据格式的转换,这得益于ArcGIS产品的数据互操作模块DataInteroperability。

ArcGIS的数据互操作模块可以在Desktop,ArcGISEngine和ArcGISforServer中运行,在10.2版本的互操作模块可以直接读取150多种数据格式,可以对110多种数据格式进行写操作。

在9.x版本的时候,只要安装了ArcGIS系列的相应产品,数据互操作模块也被同时安装,在10.x系列中数据互操作模块并没有随主程序安装,而是需要单独安装,不过,安装介质和主程序在同一张盘中,如下图所示:

在桌面软件中进行数据的转换,相信很多人已经用过而且熟悉,这次讨论的主要是如何在服务器端进行数据的转换。

1软件环境

ArcGISforServer10.2+数据互操作模块

ArcGISforDesktop10.2+数据互操作模块

2目的

实现shp数据到mif数据的转换

3操作过程

3.1建立GP服务

在服务器端进行数据转换,依靠的是ArcGIS的GP服务,所以先要将这个GP模型建立OK。

说明,在数据互操作的模块中,很多GP的工具的输出都是目录,而目录是不能作为GP服务的输出参数(后面分析一下,这个我也纳闷了半天),即便是在建立模型的时候给这个参数设置了”P”标记,如下图:

发布服务后也看不到输出参数,如下:

在GP模型中,如果没有输出参数,是不允许的,不然怎么得到这个结果的?

3.2过程分析

要在服务器端进行数据转换,需要以下步骤

1,上传文件,

2,服务器进行文件格式转换操作,

3,处理完了之后返回给目标文件。

前面提到过,在数据互操作的时候,输出的很多都是目录,而这个目录是不能作为服务器端输出参数的,所以需要另辟蹊径,你可能已经知道答案了,没错,可以用Python去写,上传的文件如何处理呢,这个根据情况,如果数据文件是单个的文件,那么直接上传就可以了,如果是shp这样的格式(由好几个文件组成),那么需要上传shp格式的打包文件,传到服务器端,进行解压,Python自带了解压模块,根据这个思路,那么整个流程的步骤应该是:

1.上传文件(打包的)

2.服务器解压文件

3.服务器处理解压后的文件

4.服务器打包处理好的文件

5.服务器将打包后的文件返给客户端

3.3操作演示

整个模型如下:

用的代码如下:

#-*-coding:

utf-8-*-

'

Createdon2014-4-17

@author:

刘宇

importos,os.path

importzipfile

importarcpy

defzip_dir(dirname,zipfilename):

filelist=[]

if

filelist.append(dirname)

else:

forroot,dirs,filesinos.walk(dirname):

fornameinfiles:

filelist.append(,name))

zf=zipfile.ZipFile(zipfilename,"

w"

fortarinfilelist:

arcname=tar[len(dirname):

]

#printarcname

zf.write(tar,arcname)

zf.close()

defunzip_file(zipfilename,unziptodir):

ifnot

os.mkdir(unziptodir)

zfobj=zipfile.ZipFile(zipfilename)

fornameinzfobj.namelist():

name=name.replace('

\\'

'

/'

ifname.endswith('

):

os.mkdir(,name))

else:

ext_filename=,name)

ext_dir=

ifnot:

os.mkdir(ext_dir,0777)

outfile=open(ext_filename,'

wb'

outfile.write(zfobj.read(name))

outfile.close()

defgetFeatureClass(wsdir,desws):

featureclasses=arcpy.ListFeatureClasses()

forfcinfeatureclasses:

#arcpy.ImportToolbox("

D:

/2014/GP/CADToShape/CADToShape/Interoperability.tbx"

#//="

;

Destination_MapInfo_Directory_="

C:

\\test\\test9"

#,Destination_MapInfo_Directory_)

SX="

MIF,"

+desws+"

\"

RUNTIME_MACROS,\"

\"

QUOTE_OUTPUT_VALUES,No,SEPARATOR,\"

ENCODING,\"

META_MACROS,\"

DestQUOTE_OUTPUT_VALUES,No,DestSEPARATOR,\"

DestENCODING,\"

METAFILE,MIF,COORDSYS,,__FME_DATASET_IS_SOURCE__,false\"

"

Output_Dataset="

MIF,C:

\\test\\test5,\"

#Process:

QuickExport

arcpy.QuickExport_interop(fc,SX)

#Scriptarguments

#v2000_hrcn_shp=arcpy.GetParameterAsText(0)

#ifv2000_hrcn_shp=='

#'

ornotv2000_hrcn_shp:

#v2000_hrcn_shp="

\\test\\test2\\2000_hrcn.shp"

#provideadefaultvalueifunspecified

#

#Destination_MapInfo_Directory_=arcpy.GetParameterAsText

(1)

#ifDestination_MapInfo_Directory_=='

ornotDestination_MapInfo_Directory_:

#Destination_MapInfo_Directory_="

\\test\\test2"

##Localvariables:

##Process:

shp2mif

#="

##Warning:

thetoolboxD:

/2014/GP/CADToShape/CADToShape/Interoperability.tbxDOESNOThaveanalias.

##Pleaseassignthistoolboxanaliastoavoidtoolnamecollisions

##Andreplacewitharcpy.SpatialETLTool2_ALIAS(...)

#"

Destination_MapInfo_Directory_)

if__name__=='

__main__'

:

dirx="

\\test\\test6"

zipfilename=arcpy.GetParameterAsText(0)

#zipfilename="

\\test\\test1.zip"

unzipWs=arcpy.GetParameterAsText

(1)

desws=arcpy.GetParameterAsText

(2)

desws3=arcpy.GetParameterAsText(3)

#unzipWs="

\\test\\test8"

#desws="

unzip_file(str(zipfilename),str(unzipWs))

getFeatureClass(str(unzipWs),str(desws))

zip_dir(str(desws),desws3)

ArcGISforServer从10.1版本开始支持文件上传的这个接口,只需要在服务这个GP服务的时候选中uploads就行,如下图:

在rest的服务目录中,进入这个服务,上传文件成功后,将会返回一个ID,如下图:

上传成功后的文件可以在这里找到,可以看到这个ID表示的是一个文件目录:

在执行GP的时候,按照下面这个格式,这里的itemID,就是刚才返回的ID,服务器通过这个ID,就可以找到上传到的文件,下来就进入到了,数据解压,处理和打包下载这个环节。

返回后的结果

3.4关于文件目录

在建立GP模型的时候,有4个标记了P的参数,但是服务发布成功后,只有2个,凡是类型为folder的都不会出现,这个我分析了半天算是找到,在参数中,有一个是解压目录,就是将上传到的zip文件放到这个目录中,最后可以看到这个解压目录被放到了这里,如下图:

其实Server在这里做了一个偷天换日的工作,只要发现目录,在发布服务的时候自己就会给替换掉,而将目录的最

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1