首页 / 浏览问题 / 其他 / 问题详情
iobjectpy +REST API 实现地图服务的自动发布
kpl
1EXP 2023年05月30日

使用产品:iclientpy  操作系统:win11 x64

问题详细描述:根据文档(获取iClientPy — iClientPy 9.0-RC 文档 (supermap.io))进行安装,发现难以安装iclientpy,于是我试着用源码安装,查看该git仓库,发现5年前已经不再维护。我按照readme文件直接用pip安装后无法导入包:from iclientpy.server import Server,找不到server文件。


使用Supermap iobject python和Supermap iServer REST API发布地图服务,你能找到全国目前唯一iobjectpy用法_Anefuer_kpl的博客-CSDN博客

1个回答

您好,我们的产品是在不断适应行业,优化更新迭代的,在目前11i版本的产品线中iClient Python。

建议您可以看下现在11i的产品,如果要做前端开发,iClient for Leaflet、iClient for OpenGL、iClient for MapBox、iClient for Classic、iClient for Cesium 、iClient for WebGL等。

https://iclient.supermap.io/

如果要做pyhton开进行分析处理,可以使用iObject Pyhton。

http://support.supermap.com.cn/product/iObjects.aspx

http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx

希望可以帮助到您。

于丁
1
9,543EXP 2023年05月30日
您好,我使用iclientpy的目的是期望能够使用python代码实现supermap iserver服务的自动发布,iObject Python可以实现类似的功能么?
发布iserver服务,使用iserver的rest api,对iserver发请求即可。该部分没有产品需求,使用什么代码发服务都可以。

如果需要操作数据(比如数据源、工作空间等),或者获取一些数据内部的信息,建议使用iobject组件,iobject组件可以操作数据。

因此建议iobject java+iserver rest api或者iobject .net + iserver rest api
我有这样一个需求:本地已经处理好数据,数据的格式为shapefile(shp),我希望使用代码自动将shp数据发布成地图服务,以供web前端调用。您说的任何代码都可以对iserver发送请求,我不确定是否可以使用REST API提交这样的数据(shp),并发布成服务。我没有找到相关的博客介绍如何使用REST API,官方文档里也只是简单写了:
SuperMap iServer 的 REST 服务严格遵循 ROA(面向资源的架构)设计,GIS 的各种功能都以资源的形式进行发布,而且任何对资源的操作行为都是通过 HTTP 协议来实现,即 HTTP 把对一个资源的操作限制在4个方法以内:GET,POST,PUT 和 DELETE,这正是对资源 CRUD(Create,Retrieve,Update,Delete)操作的实现。

很抱歉我对REST API的使用还不熟悉(学生,临阵磨枪),如果您能够提供类似于对于上述使用REST API发布shp数据的代码示例,我将非常感谢。

shp不是地图,要用shp发布地图服务,

需要将shp导入到数据源里作为数据集,然后在使用数据数据集制作地图,保存地图到工作空间,发布工作空间为地图服务。

这个流程可以使用iDesktop桌面端手工操作也可以使用iobject代码实现。

建议你先用iserver和iDesktop的手动操作流畅逻辑实践清晰了,知道手动怎么操作了再来设计代码实现。

iserver的rest api每个接口都有全参数的文档说明,你可以查看iserver的文档。

api文档:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/mergedProjects/SuperMapiServerRESTAPI/resource_hierarchy.htm

发布服务接口使用的是ManagerRoot:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/iServer/mergedProjects/SuperMapiServerRESTAPI/manager/root.htm

java组件发布服务参考:https://blog.csdn.net/supermapsupport/article/details/111977861

您好,我按照您的提示,已经实现了使用REST API上传数据的操作,但在发布地图服务的时候又遇到了一些困难。

问题如下:

我使用iobjectpy将shp数据转换为了udb数据源,由于要使用REST API发布地图服务是,当前仅支持文件型工作空间的发布。因此我想使用iobjectpy将udb数据源保存为类似于(.sxwu, .smwu, .sxw, .smw)这样的文件型工作空间,但我在这一步中遇到了一些困难,我查看了iobjectpy的文档,但文档中的示例太少,一些函数的用法我看的不是很明白,因此在这一步遇到了些困难,你能提供我一些帮助么?(实现将udb数据源保存为类似于(.sxwu, .smwu, .sxw, .smw)这样的文件型工作空间)

这是我尝试着写的代码:

def connect_data(udb_path):
    ws = Workspace()
    conn_info = WorkspaceConnectionInfo(udb_path)
    ws.create(conn_info)
    data = Datasource.open(udb_path)
    ws.save()

但这段代码并没有保存生成类似于 xxx.sxwu 这样的文件

您好,建议您可以使用一下iDesktop或者iDesktopX桌面端,熟悉了解一下数据数据结构流程。

数据源和工作空间是两个东西,数据源在工作空间内,不是相互转换的,

发布地图服务需要制作地图,地图存储在工作空间内,地图由图层构成,每一个图层指向一个数据集,

数据集存储在数据源内。

数据源本身不是地图,不能发布地图服务,只是加了数据源但是没有制作地图的工作空间,一样不能发布地图服务。
...