1

我正在运行 Oracle ArcSDE 9.2 并使用 GeoTools 8.5,但按照他们在 GeoTools 文档中所说的操作似乎不起作用。我有

Map<String, Object> params = new HashMap<String, Object>();
params.put( "dbtype", "arcsde" );
params.put( "server", "164.64.146.42" );
params.put( "port", "5151" );
params.put( "instance", "sde" );
params.put( "user", "sde_admin" );
params.put( "password", "whatever" );

DataStore dataStore;
String typeName;

try
{
    dataStore = DataStoreFinder.getDataStore(params);
    typeName = dataStore.getTypeNames()[0];
} catch (IOException e)
{
    e.printStackTrace();
}

FeatureSource source = dataStore(typeName);

但是,在 dataStore = dataStoreFinder.getDataStore(params) 之后,dataStore 始终为 null,表示它没有连接。除非我尝试使用为空的 dataStore 对象,否则我不会遇到异常。而且我不希望它起作用,因为它不要求我提供模式。当您使用 GeoServer 成功连接到同一个 SDE 地理数据库时,它坚持使用模式参数,在我的例子中是“envq.nmenv.state.nm.us”。我会将其添加到某处的服务器名称中吗?或者我错过了什么不连接?我现在只是尝试以只读方式连接,但最终我想使用 GeoTools 将数据放入。

4

1 回答 1

1

使用使用 GeoTools 库的软件 uDig 已经回答了我的问题。当通过 uDig 从 ArcSDE DataStore 加载时,uDig 提示知道以下 jar 的位置: jsde92_sdk.jar jpe92_sdk.jar icu4j_3_2.jar 通过在 Eclipse 中将 gt-arcsde 添加到 pom.xml 中,它们不会通过 Maven 自动加载,但是在文件名geoserver-2.2.2-arcsde-plugin.zip中的 ArcSDE 数据存储扩展下与GeoServer一起分发 将它们的位置添加到您的 CLASSPATH 或在 Eclipse 中转到 Project->Properties->Java Build Path 并添加外部 JAR.. . 并选择所有三个。届时,上述代码将保持不变。

于 2012-12-28T22:02:33.913 回答