GP服务使用本地上传的文件进行分析

 1、需求:

自己选择本地的文件上传在gp服务中进行分析,例如实现这个需求:

2、遇到的困境

发布创建TIN工具时要输入值表,但是我这里选择了本地的SHP文件和高程值后,发布出去就是一个常量值了,没法自己选择文件上传。如图:

3、解决思路

arcpy制作一个gp工具来发成gp服务。我看了创建tin的arcpy语法,里面的demo这一块有参数写法的介绍,如果将输入要素变成变量那就可以灵活的用自己的数据了。

4、最终实现的python代码:

提示:使用的python2需要注意中文字符支持问题。参考资料:python2 中文编码问题小结_python 2 汉字编码_up酱的博客-CSDN博客

# -*- coding: UTF-8 -*-
import os,os.path
import arcpy
import sys
import traceback
import zipfile
from os.path import isdir, join, normpath, split
reload(sys)
sys.setdefaultencoding("utf-8")arcpy.env.overwriteOutput=True
#by gislaozhang---20230829
#基于要素创建TIN的类# Function to unzipping the contents of the zip file
#
def unzip(path, zip):# If the output location does not yet exist, create it## doneif not isdir(path.decode('utf-8')):os.makedirs(path.decode('utf-8'))for each in zip.namelist():# arcpy.AddMessage("Extracting " + os.path.basename(each) + " ...")print "Extracting " + os.path.basename(each) + " ..."# Check to see if the item was written to the zip file with an# archive name that includes a parent directory. If it does, create# the parent folder in the output workspace and then write the file,# otherwise, just write the file to the workspace.#if not each.endswith('/'):# print eachroot, name = split(each)# print rootdirectory = normpath(join(path, root))print directoryif not isdir(directory.decode('utf-8').encode('gb2312')):os.makedirs(directory.decode('utf-8').encode('gb2312'))f = file(join(directory.decode('utf-8').encode('gb2312'), name), 'wb')f.write(zip.read(each))def createTIN(inFeature,inHeightField,sr,outRaster,dataType,method,sampling,zfactor):try:arcpy.CheckOutExtension("3D")# Execute CreateTinarcpy.AddMessage("Creating TIN dataset...")tempData1 = arcpy.CreateScratchName(workspace=arcpy.env.scratchGDB)  # 使用scratchGDB管理临时数据# print tempData1result = arcpy.CreateTin_3d(tempData1, sr, "{0} {1}" \.format(inFeature, inHeightField).decode("utf-8"), "Delaunay")arcpy.TinRaster_3d(result, outRaster.decode("utf-8"), dataType,method, sampling, zfactor)arcpy.AddMessage("Finished")arcpy.CheckInExtension("3D")except arcpy.ExecuteError:print arcpy.GetMessages()def copyFeature(unzip_dir):arcpy.env.workspace = unzip_dirlistfc = arcpy.ListFeatureClasses()tempData = arcpy.CreateScratchName(workspace=arcpy.env.scratchGDB)#使用scratchGDB管理临时数据for fc in listfc:print(fc)arcpy.CopyFeatures_management(fc, tempData)createTIN(tempData,inHeightField, sr, outRaster, dataType, method, sampling, zfactor)# Set local variables
# infile = r"E:\等高线纠正.zip"
tempData = arcpy.CreateScratchName(workspace=arcpy.env.scratchFolder) # Use scratchGDB environment to write intermediate datainHeightField = "Elevation"  #创建tin高度字段
# sr = r"E:\等高线纠正.prj"  #
# outTin = r"E:\CreateTin"  # TIN created to delineate data area
# outRaster = r"E:\tinraster.tif"
# dataType = "FLOAT"
# method = "LINEAR"
# sampling = "OBSERVATIONS 250"
# zfactor = "1"infile = arcpy.GetParameterAsText(0) #输入zip压缩数据
# inHeightField = arcpy.GetParameterAsText(1) #创建tin高度字段
sr = arcpy.GetParameterAsText(1)  #空间参考信息
outRaster =arcpy.GetParameterAsText(2) #tin转栅格的输出路径
dataType = arcpy.GetParameterAsText(3) #栅格数据类型
method = arcpy.GetParameterAsText(4) #创建栅格方法
sampling = arcpy.GetParameterAsText(5) #重采样方法
zfactor =arcpy.GetParameterAsText(6) #比例因子# Create the zipfile handle for reading and unzip it
#解压zip压缩包的shp数据到指定的文件夹
#
zip = zipfile.ZipFile(infile.decode('utf-8'), 'r')# methodsForTin=FeatureToTin(outfol)
unzip(tempData, zip)
zip.close()copyFeature(tempData)# Use scratchGDB environment to write intermediate data
# tempData = arcpy.CreateScratchName(workspace=arcpy.env.scratchFolder)

制作的模型和执行的结果:

链接:https://pan.baidu.com/s/1mqBtB92bGQrIHCqVytlmXA 
提取码:iafl 

5、将执行的结果发成gp服务

发布gp服务时勾选“upload”和“查看地图服务结果”选项

在server中执行该gp服务,执行gp服务时,首先将zip文件上传

然后在执行gp服务时这样传参

https://developers.arcgis.com/rest/services-reference/enterprise/gp-data-types.htm

{

"itemID":"i21a899a6-75a5-43c3-8b0a-29d871d82ab4"

}

最终执行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/112844.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 接口测试之接口关键字封装

引言 我们使用RF做UI自动化测试的时候,使用的是关键字驱动。同样,Python做接口自动化测试的时候,也可以使用关键字驱动。但是这里并不是叫关键字驱动,而是叫数据驱动。而接口测试的关键字是什么呢? 我们数据驱动的载体…

匠心新品:大彩科技超薄7寸WIFI线控器发布,热泵、温控器、智能家电首选!

一、产品介绍 此次发布一款7寸高清全新外壳产品,让HMI人机界面家族再添一新成员。该产品相比其他外壳有以下5个大改动: 1 表面玻璃盖板使用2.5D立体结构; 2 液晶盖板采用一体黑设计,且液晶屏与触摸板是全贴合结构; …

Qt5升级到Qt6分步迁移教程

Qt框架的一个新的长期支持版本6.5最近发布。它为以前的版本引入了许多修复、改进和新功能。有些可能对您的应用程序有用(如果不是现在,可能会在将来),因此最好将应用程序迁移到最新版本的框架。 仍然有许多应用程序仍在使用Qt 5&…

自动驾驶和辅助驾驶系统的概念性架构(一)

摘要: 本文主要介绍包括功能模块图,涵盖了底层计算单元、示例工作负载和行业标准。 前言 本文档参考自动驾驶计算联盟(Autonomous Vehicle Computing Consortium)关于自动驾驶和辅助驾驶计算系统的概念系统架构。 该架构旨在与SAE L1-L5级别的自动驾驶保…

FC-TDIO51 HONEYWELL 关于霍尼韦尔过程解决方案

FC-TDIO51 HONEYWELL 关于霍尼韦尔过程解决方案 霍尼韦尔过程解决方案(HPS)宣布推出一款文档和变更管理软件,该软件将帮助其客户的工业控制系统的完整性。Honeywell Trace用自动化解决方案取代了纸质记录和电子表格。通过提供复杂系统交互的单一集成视图&#xff0…

分析系统 - 使用Python爬虫

在竞争激烈的市场环境中,了解和分析竞争对手的销售策略和市场表现对于企业的成功至关重要。本文将介绍如何利用Python爬虫建立低成本的销售竞争对手分析系统,探索其方法、工具和好处,并同时解决可能出现的问题。 销售竞争对手分析的目标是获取…

42、Flink 的table api与sql之Hive Catalog

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

Javaweb入门

Spring Spring发展到今天已经形成一种开发生态圈,Spring提供若干个子项目,每个项目用于完成特定的功能。 Spring Boot可以帮助我们非常快速的构建应用程序、简化开发、提高效率 SpringBootWeb入门 需求:使用Spring Boot开发一个web应用&a…

【C++】二叉搜索树

二叉搜索树 1. 二叉搜索树概念2. 二叉搜索树的实现3. 二叉树的应用4. 练习 1. 二叉搜索树概念 二叉搜索树要么是棵空树,要么满足以下性质:(1)若左子树不为空,左子树上所有节点的键值小于根节点的键值;&…

学习笔记230810--vue项目中get请求的两种传参方式

问题描述 今天写了一个对象方式传参的get请求接口方法,发现没有载荷,ip地址也没有带查询字符串,数据也没有响应。 代码展示 错误分析 实际上这里的query是对象方式带参跳转的参数名,而get方法对象方式传参的参数名是parmas 解…

Linux 内核动态打印调试(dev_info、 dev_dbg )

目录 前言 1 printk消息级别 2 调整内核printk打印级别 3 dev_xxx函数简介 4 配置内核使用动态打印 5 动态调试使用方法 6 动态打印调试的基本原理 🎈个人主页🎈:linux_嵌入式大师之路的博客-CSDN博客🎉🎉&…

【Flutter】下载安装Flutter并使用学习dart语言

前言 安装flutter, 并使用flutter内置的dartSDK学习使用dart语言。 编辑器: Android Studio fluuter 版本 : flutter_windows_3.13.1 内置dartSDK : 3.1.0 dart路径路径: flutter安装路径\bin\cache\dart-sdk 安装Flutter 下载安装包 flutter下载地址…

virtuoso61x中集成calibre

以virtuoso618为例,在搭建完电路、完成前仿工作之后绘制版图,版图绘制完成之后需要进行drc和lvs【仅对于学校内部通常的模拟后端流程而言】,一般采用mentor的calibre来完成drc和lvs。 服务器上安装有virtuoso和calibre,但是打开la…

windows 搭建 swoole开发环境(官网已支持)

第一步下载:swoole官网下载 swoole-cli-v5.0.3-cygwin-x64.zip 只支持 64 位的系统 第二步解压到指定文件夹:E:\phpstudy_pro\WWW\swoole-cli-v5.0.3-cygwin-x64 第三步设置环境变量:把解压后的文件夹下的 bin 目录路径配置到系统的 Path 环境…

入职字节外包一个月,我离职了

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

最新ChatGPT程序源码+AI系统+详细图文部署教程/支持GPT4.0/支持Midjourney绘画/Prompt知识库

一、AI系统 如何搭建部署人工智能源码、AI创作系统、ChatGPT系统呢?小编这里写一个详细图文教程吧!SparkAi使用Nestjs和Vue3框架技术,持续集成AI能力到AIGC系统! 1.1 程序核心功能 程序已支持ChatGPT3.5/GPT-4提问、AI绘画、Mi…

Hadoop 集群小文件归档 HAR、小文件优化 Uber 模式

文章目录 小文件归档 HAR小文件优化 Uber 模式 小文件归档 HAR 小文件归档是指将大量小文件合并成较大的文件,从而减少存储开销、元数据管理的开销以及处理时的任务调度开销。 这里我们通过 Hadoop Archive (HAR) 来进行实现,它是一种归档格式&#xf…

【Interaction交互模块】LinearJointDrive线性关节驱动

文章目录 一、预设体位置二、案例:做一个“能拉动的抽屉”三、原理四、交互方式1、碰触2、抓取 一、预设体位置 交互模块——可控制物体——物理关节——线性关节驱动 二、案例:做一个“能拉动的抽屉” 建一个柜子外框,然后拓展“线性关节…

Node.js /webpack DAY6

一、Node.js 入门 1. 什么是 Node.js? 2. 什么是前端工程化? 3. Node.js 为何能执行 JS? 4. Node.js 安装 5. 使用 Node.js 总结 6. fs 模块 - 读写文件 /*** 目标:基于 fs 模块 读写文件内容* 1. 加载 fs 模块对象* 2. 写入文件…