使用产品:python3.6.5、iobjectsjava-11.1.1、supermap-iobjectspy-11.1.1 操作系统:win11 x64
问题详细描述:使用python IDLE调用iobjectpy写了一个读取字段属性信息的脚本,运行后出现类似许可问题的报错。我现在使用的是公有云许可,想问问这个问题该如何解决?
问题重现步骤:
1.python脚本
from iobjectspy import *
def get_data(input_shapefile, field_name, array):
# 打开数据源
ds = open_datasource(input_shapefile)
if ds is None:
print("打开数据源失败")
return
# 获取数据集
dataset = ds.first_dataset
if dataset is None:
print("数据源中没有数据集")
return
# 检查字段名是否存在
if field_name not in dataset.fields:
print(f"字段名 {field_name} 不存在于数据集中")
return
# 遍历数据集
for feature in dataset:
value = feature.get_attribute(field_name)
array.append(value)
# 关闭数据源
ds.close()
# 示例使用
data_dir = "D:\SuperMap\datasource\model_1.udbx"
input_shapefile = os.path.join(data_dir, "道路受监控范围.shp")
field_name = "SmArea"
array = []
get_data(input_shapefile, field_name, array)
print(array)
2.cmd弹窗
![](//ask.supermap.com/?qa=blob&qa_blobid=18182404846373740666)
3.idle报错内容
[iObjectsPy]: The Gateway service started successfully
Traceback (most recent call last):
File "C:\Python36\test\get_data.py", line 35, in <module>
get_data(input_shapefile, field_name, array)
File "C:\Python36\test\get_data.py", line 5, in get_data
ds = open_datasource(input_shapefile)
File "I:\teamctiy\BuildAgent\work\test_111x/iobjectspy/_jsuperpy\data\ws.py", line 1221, in open_datasource
File "I:\teamctiy\BuildAgent\work\test_111x/iobjectspy/_jsuperpy\data\ws.py", line 389, in __new__
File "C:\Python36\lib\site-packages\py4j\java_gateway.py", line 1323, in __call__
answer, self.gateway_client, self.target_id, self.name)
File "C:\Python36\lib\site-packages\py4j\protocol.py", line 328, in get_return_value
format(target_id, ".", name), value)
py4j.protocol.Py4JJavaError: An error occurred while calling z:com.supermap.jsuperpy.RegisterWorkspace.newPythonWorkspace.
: java.lang.RuntimeException: hasp_container_not_found
at com.supermap.jsuperpy.RegisterWorkspace.newPythonWorkspace(RegisterWorkspace.java:31)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
at py4j.Gateway.invoke(Gateway.java:282)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:238)
at java.base/java.lang.Thread.run(Thread.java:834)