[fdo-users] RE: Defining SpatialContext - how and when?

Gavin Cramer gavin.cramer at autodesk.com
Sat Jul 7 11:34:30 EDT 2007


Ah, yes, the WKT...

WKT only needs to be manually set (using FdoICreateSpatialContext::SetCoordinateSystemWkt() for FDO providers that cannot generate WKT.  This is the case for most providers (because their underlying datastores don't have native coordinate system support).

For those that do natively support coordinate systems (like Oracle), the provider may also verify that the coordinate system name and WKT are in the datastore's catalogue.  It's generally just a blind string comparison, so minor variations may cause a failure in WKT.  To avoid this, just omit setting the WKT attribute.

There is an FDO capability to let you know whether WKT generation is supported:  FdoIConnectionCapabilities:: SupportsCSysWKTFromCSysName().

By the way, while your code for creating a LineString will work, the FdoIDirectPosition type is not yet a pooled object, and will result in a lot of heap activity.  I recommend looking at the other constructors that are more efficient if you plan to use a lot of features.  For example, there is one that takes an array of ordinates.  There are accessors that tend to be much faster as well.  For example, GetItemByMembers() is the fastest one that does all the ordinate reading for you, and GetOrdinates() is the fastest if you want a raw ordinate array.

Gavin




-----Original Message-----
From:	fdo-users-bounces at lists.osgeo.org on behalf of Maksim Sestic
Sent:	Sat 07-Jul-07 10:28 AM
To:	fdo-users at lists.osgeo.org
Cc:	
Subject:	[fdo-users] RE: Defining SpatialContext - how and when?


Dear Gavin,

Thanks for the tip. It's still bugging me. Here's what I'm doing:

1) create new DataStore named "GIS"

2) create SpatialContext named "MGI" using following parameters:
- Name: MGI
- Description: MGI
- Coordinate System: MGI / Balkans zone 6
- Coordinate System WKT: PROJCS["MGI / Balkans zone 
6",GEOGCS["MGI",DATUM["Militar_Geographische_Institute",SPHEROID["Bessel 
1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.000000],UNIT["Decimal 
Degree",0.01745329251994330]],PROJECTION["Transverse_Mercator"],PARAMETER["Centr
al_Meridian",18],PARAMETER["Scale_Factor",0.9999],PARAMETER["False_Easting",6500
000.000000],PARAMETER["False_Northing",0.000000],UNIT["Meter",1.000000000000]]
- XY Tolerance: 0.0001
- Z Tolerance: 0.0001
- Extents Type: SpatialContextExtentType_Static
- Extents range from 0,0 to 7000000,7000000

3) create schema "TESTSCHEMA" containing one class "TESTCLASS" with
GeometryValue defined as:
geomProperty.GeometryTypes = 7
geomProperty.SpatialContextAssociation = "MGI"

-------------

Still, when I try to issue an Insert on some geometry ti throws "Error
creating spatial context (null) (SRID=486518961), the WKT provided does not
match the catalog." again.

Here's the geometry definition (sitting within specified spatial context
extents):

Dim insertCommand As IInsert =
CType(m_Transaction.Connection.CreateCommand(CommandType.CommandType_Insert),
IInsert)
insertCommand.SetFeatureClassName("TESTSCHEMA:TESTCLASS")

Dim factory As AgfGeometryFactory = New AgfGeometryFactory()
Dim pcollection As DirectPositionCollection = New DirectPositionCollection()
pcollection.Add(factory.CreatePositionXY(6500001, 4950001))
pcollection.Add(factory.CreatePositionXY(6534554.445, 4958445.342))

Dim line As ILineString = factory.CreateLineString(pcollection)
Dim geometryValue As GeometryValue = New GeometryValue(factory.GetAgf(line))
insertCommand.PropertyValues.Add(New PropertyValue("geometry",
geometryValue))
insertCommand.Execute()

---------------------------

Regards,
Maksim Sestic




Gavin Cramer wrote:
> 
> Hello, Maksim.  The "active" spatial context is a bit of a stale idea,
> and might become deprecated.  Any provider that currently cares about it
> actually sets it internally, based on the relevant geometric property's
> spatial context association.
> 
> The association can be set when creating a schema definition via
> FdoGeometricPropertyDefinition:: SetSpatialContextAssociation().
> 
> Gavin
> 
> 
> -----Original Message-----
> From: fdo-users-bounces at lists.osgeo.org
> [mailto:fdo-users-bounces at lists.osgeo.org] On Behalf Of Maksim Sestic
> Sent: Saturday, July 07, 2007 8:50 AM
> To: fdo-users at lists.osgeo.org
> Subject: [fdo-users] Defining SpatialContext - how and when?
> 
> 
> Autodesk Map 3D 2007 / MS SQL Server 2005
> 
> I have problems inserting a new GeometryValue due to the "Default"
> SpatialContext settings. "Default" SpatialContext has an envelope
> (extents)
> ranging from -2000000,-2000000 to 2000000,2000000, while my geometry
> lies
> way beyond default settings. Due to that fact, I keep receiving
> following
> error: "Error creating spatial context (null) (SRID=486518961), the WKT
> provided does not match the catalog."
> 
> I tried to update Extents value on "Default" spatial context using
> CreateSpatialContext command but it's not working (well, at least
> nothing
> changes in dbo.f_spatialcontextgroup table). Then I resorted to creating
> a
> new SC.
> 
> Now, I managed to create a new SpatialContext (named "MGI") with
> associated
> WKB string, proper extents settings, etc. Alas, I can not activate it
> :-)
> ActivateSpatialContext command does not affect present spatial contexts
> within DataStore - ISpatialContextReader always returns IsActive = False
> for
> every SC present.
> 
> I think I'm doing something wrong here, just can't figure out exactly
> what... :-) At what moment do I need to create custom SpatialContext
> (before
> or after creating feature schema?), and how do I apply newly established
> SC
> on present schema? How do I "force" my newly inserted geometric values
> "conformant" to present SC? 
> 
> Regards,
> Maksim Sestic
> 
> 
> -- 
> View this message in context:
> http://www.nabble.com/Defining-SpatialContext---how-and-when--tf4040281s
> 18162.html#a11478212
> Sent from the fdo-users mailing list archive at Nabble.com.
> 
> _______________________________________________
> fdo-users mailing list
> fdo-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/fdo-users
> 
> _______________________________________________
> fdo-users mailing list
> fdo-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/fdo-users
> 
> 

-- 
View this message in context: http://www.nabble.com/Defining-SpatialContext---how-and-when--tf4040281s18162.html#a11478979
Sent from the fdo-users mailing list archive at Nabble.com.

_______________________________________________
fdo-users mailing list
fdo-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/fdo-users


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/fdo-users/attachments/20070707/5db72138/attachment-0001.html


More information about the fdo-users mailing list