Tuesday, December 05, 2006

PostGIS for SDE

One of the interesting nuggets to come out of the ESRI User Conference this year was the news that ESRI was going to support ArcSDE on PostgreSQL "sometime soon". Which, to PostGIS people like ourselves suggests the question: "implemented how?"
  • One possibility would be basically a cut'n'paste of their existing SQLServer code, with the SQLServer quirks replaced with PostgreSQL quirks, using SDEBINARY as the spatial type.
  • Another possibility would be to use the PostGIS spatial objects as the underlying storage mechanism, in the same way ArcSDE supports using SDO_GEOMETRY in Oracle.
  • A third possibility would be ESRI implementing their own spatial type in PostgreSQL and then using that.
Sounds strange, doesn't it? Writing a whole new spatial type, when one already exists. Ordinarily I would dismiss the idea -- except that ESRI has already done it for Oracle!.

The ST_GEOMETRY type in ArcSDE 9.1 and up is a native Oracle type (built using the Oracle type-extension mechanism) provided, and recommended, by ESRI for use by ArcSDE.

Why would ESRI do this?

The cynical explanation (get this out of the way first) is that it helps break the growing Oracle momentum in tools supporting SDO_GEOMETRY, and confuses the marketplace further about what the "right type" to use is in Oracle for spatial work.

The practical explanation is that ESRI's ST_GEOMETRY for Oracle implements the same semantics and function signatures as the ST_GEOMETRY objects in DB2 and Informix (coincidentally, also implemented in part by ESRI). This allows ArcSDE to expose a uniform "raw spatial SQL" to clients while still maintaining it's position as the man-in-the-middle of client/server interaction. Adding ST_GEOMETRY further reinforces the "database neutral" aspect of ArcSDE by allowing spatial SQL without exposing the differences between the SDO_GEOMETRY function signatures and the ST_GEOMETRY ones.

So where does that leave PostGIS? Removing the practical excuses for not using PostGIS as the underlying geometry type as fast as possible. We have looked up the function signatures used by ArcSDE and implemented them for the 1.1.7 release.

If anyone on the ArcSDE team reads this and wants to talk about what else is needed to make PostGIS the default geometry type for ArcSDE-on-PostgreSQL, get in touch. We aim to please.

4 comments:

Sean said...

+1

Paul, have you a blog feed? I would have missed this one for a while if James hadn't pointed me to it.

Sean said...

Nevermind. Used the source, I did.

Bart van den Eijnden said...

Paul, does this mean ArcGIS 9.2 cannot read SDO_GEOMETRY tables without ArcSDE in between? We've heard different stories here in The Netherlands, but haven't been able to verify as yet.

Paul Ramsey said...

Bart, ArcGIS can do what is known as "direct connect", though I have heard varying stories about how well it works, or if it works with SDO_GEOMETRY or just geodatabases. I have no direct experience with it.

About Me

My Photo
Paul Ramsey
Victoria, British Columbia, Canada
View my complete profile

Followers

Blog Archive