我正在使用具有 ST_GEOMETRY 空间类型的 ArcSDE 和 Oracle。我正在使用 SqlGeoemtry 类型编写 C# 代码。我想要的是能够请求相交但使用 wkb 而不是 wkt。我知道它适用于 wkt,但如果我的功能有很多顶点,我会从 Oracle 收到关于字符串文字太大的错误(我猜它是 2000 个字符左右)。我也知道我可以将那个大字符串分块成一个 CLOB 并将这些块发送进去并让相交操作工作。
我想要的是使用二进制格式并避免所有这些问题。但我在语法上有问题。以下是适用于 wkt 的方法:
oracleCommand.CommandText = string.Format("SELECT OBJECTID FROM {0} WHERE sde.st_intersects(shape, sde.st_polyfromtext('{1}', 3071)) = 1", selectionLayerName, unionedBuffer.ToString());
这是现在不起作用的:
oracleCommand.CommandText = string.Format("SELECT OBJECTID FROM {0} WHERE sde.st_intersects(shape, sde.st_polyfromwkb('{1}', 3071)) = 1", selectionLayerName, unionedBuffer.STAsBinary());
Obstacle 的投诉是 ORA-29900: operator binding does not exist 我该怎么做才能让 Oracle 接受二进制格式的传入功能?