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

news2025/4/8 8:28:20

 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
    #
    # done
    if 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 each
            root, name = split(each)
            # print root
            directory = normpath(join(path, root))
            print directory
            if 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 CreateTin
        arcpy.AddMessage("Creating TIN dataset...")
        tempData1 = arcpy.CreateScratchName(workspace=arcpy.env.scratchGDB)  # 使用scratchGDB管理临时数据
        # print tempData1
        result = 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_dir
    listfc = 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 data

inHeightField = "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.coloradmin.cn/o/950771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

App与小程序工具总结

文章目录 前言Burpsuite抓包问题LPosedJustTrustMe 绕过 SSL Pining小程序的反编译APP脱壳,反射大师、frida反射大师Frida 总结 前言 在进行渗透工作的时候,遇到过的App、小程序也不少了,有简单的,也有加固的比较不错的&#xff…

【软考】系统集成项目管理工程师(一)信息化基础知识【6分】

一、信息与信息系统 1、信息技术 为解决信息的采集、加工、存储、传输、处理、计算、转换、表现等问题而不断繁荣发展 核心-传输技术(通常指通信、网络等) 2、信息的质量属性 特点:客观性、普遍性 属性描述精确性对事物状态描述的精准程度…

接口幂等性设计的最佳实现

一、什么是幂等 二、为什么需要幂等 三、接口超时了,到底如何处理? 四、如何设计幂等 全局的唯一性ID 幂等设计的基本流程 五、实现幂等的8种方案 selectinsert主键/唯一索引冲突 直接insert 主键/唯一索引冲突 状态机幂等 抽取防重表 token令牌 悲观锁…

stm32之27.iic协议oled显示

屏幕如果无法点亮,需要用GPIO_OType_PP推挽输出,加并上拉电阻 1.显示字符串代码 2.显示图片代码(unsigned强制转换(char*)) 汉字显示

​iOS上架审核宝典:如何避免被拒一次提交成功

Xcode 摘要:本文整理了iOS上架需要注意的事项,以帮助从事iOS开发和App运营的朋友们避免审核被拒的困扰。通过遵循这些指南,我们可以在一次提交中成功地将应用上架,并节省宝贵的时间和精力。 引言: 从事iOS开发和App运…

【一等奖方案】大规模金融图数据中异常风险行为模式挖掘赛题「NUFE」解题思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束,大赛官方竞赛平台DataFountain(简称DF平台)正在陆续释出各赛题获奖队伍的方案思路,欢迎广大数据科学家交流讨论。 本方案为【大规模金融图数据中…

AcWing 4405. 统计子矩阵(每日一题)

如果你觉得这篇题解对你有用,可以点点关注再走呗~ 题目描述 给定一个 NM 的矩阵 A,请你统计有多少个子矩阵 (最小 11,最大 NM) 满足子矩阵中所有数的和不超过给定的整数 K ? 输入格式 第一行包含三个整数 N,M 和 K。 之后 N 行每行包含 …

智慧展馆展厅5G+LoRa+蓝牙人员定位系统解决方案

展览业是现代高端服务业的重要组成部分,作为新兴的服务行业,展览业串联着工业、农业、商贸等诸多产业,能够有效拉动产业和消费增长,是中国发展潜力较大的行业之一。如今各个行业越来越多地举办各类展会,由于展馆展厅规…

人体学接口设备 (HID)

参考链接 windows-hardware drivers hid | Microsoft Learnhttps://learn.microsoft.com/pdf?urlhttps%3A%2F%2Flearn.microsoft.com%2Fzh-cn%2Fwindows-hardware%2Fdrivers%2Fhid%2Ftoc.json人体学接口设备 (HID) 简介 - Windows drivers | Microsoft Learnhttps://learn.mi…

遇到 Binder这些面试题,你会怎么答?

作为开发人员,每个人都有每个人擅长领域,自然也有自己不擅长的领域,很难成为完美的一个全栈开发。在面试中最怕遇见的一件事是面试官专挑你不擅长的领域进行提问,目的就是看你遇到问题的应变能力。 接下给大家分享一个面试中容易被…

CUDA小白 - NPP(3) 图像处理 Color and Sampling Conversion

cuda小白 原始API链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus&#xf…

标准库STL容器使用值语义

C自学精简实践教程 目录(必读) 标准库STL的容器都是值语义的。 即&#xff0c;无法将一个变量放到容器里。容器里存放的只是我们放进去的变量的拷贝&#xff08;副本&#xff09;。 示例&#xff1a; #include <iostream> #include <vector> using namespace s…

【Apollo学习笔记】——规划模块TASK之RULE_BASED_STOP_DECIDER

文章目录 前言RULE_BASED_STOP_DECIDER相关配置RULE_BASED_STOP_DECIDER总体流程StopOnSidePassCheckClearDoneCheckSidePassStopIsPerceptionBlockedIsClearToChangeLaneCheckSidePassStopBuildStopDecisionELSE:涉及到的一些其他函数NormalizeAngleSelfRotate CheckLaneChang…

创建python环境——Anaconda

在Windows中安装Anaconda和简单使用 一.Anaconda发行概述 Anaconda是一个可以便捷获取和管理包&#xff0c;同时对环境进行统一管理的发行版本&#xff0c;它包含了conda、 Python在内的超过180个科学包及其依赖项。 1.Anaconda发行版本具有以下特点&#xff1a; (1)包含了…

Qt实现一个简单的放射式弹出菜单

Qt实现一个简单的放射式弹出菜单 实现效果&#xff1a; GitHub源码 支持特性 可设置弹出选项的起始角度与角度范围 按住中心按钮&#xff0c;可以拖拽窗口 动画支持&#xff0c;可以设置动画时间、选项的延迟弹出 设置菜单的布局对齐、边距&#xff0c;方便根据场景放置在…

YOLO目标检测——蔬菜检测数据集下载分享

YOLO蔬菜检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;图片格式为jpg&#xff0c;共21000张图片。 数据集点击下载&#xff1a;YOLO蔬菜检测数据集21000图片数据说明.rar

科研无人机平台P600进阶版,突破科研难题!

随着无人机技术日益成熟&#xff0c;无人机的应用领域不断扩大&#xff0c;对无人机研发的需求也在不断增加。然而&#xff0c;许多开发人员面临着无法从零开始构建无人机的时间和精力压力&#xff0c;同时也缺乏适合的软件平台来支持他们的开发工作。为了解决这个问题&#xf…

7.Redis-list

list list常用命令lpushlrangelpushxrpushrpushxlpop / rpoplindexlinsertllenlremltrimlset 阻塞版本命令blpop/brpop 总结内部编码应用场景使用redis作为消息队列 redis中的 list 是一个双端队列, list 相当于是数组或者顺序表。list 并非是一个简单的数组&#xff0c;而是更…

matlab使用教程(29)—微分方程实例

此示例说明如何使用 MATLAB 构造几种不同类型的微分方程并求解。MATLAB 提供了多种数值算法来求解各种微分方程&#xff1a; 1.初始值问题 vanderpoldemo 是用于定义 van der Pol 方程的函数 type vanderpoldemo function dydt vanderpoldemo(t,y,Mu) %VANDERPOLDEMO Defin…

UDP协议的重要知识点

UDP&#xff0c;即用户数据报协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;是一个简单的无连接的传输层协议。与TCP相比&#xff0c;UDP提供了更少的错误检查机制&#xff0c;并允许数据包在网络上更快地传输。在这篇博客中&#xff0c;我们将深入探讨UDP的…