Hello,
We want to implement a mapsuite InMemoryFeatureLayer client side, in which the user sees and edits geometries from different kind of objects (bridges and bridges axis)
The object geometries shown depends on the following szenarios
1.- The user changes the actual map region, the system shows the geometries contained in the showing region.
2.- The user draws a fence in the actual map and defines criterias based on object data whith our query tool (like all objects whith name beginning "N"), the system shows the object geometries contained in the fence from the objects corresponding to the data criteria.
3.- The user selects a group of objects in our application object explorer, the system shows the geometries from the selected objects and actualices the actual map in background.
The geometries can be edited by the user and the changes need to be persisted.
Solution
We want to store the object geometries in the database. (We support oracle 10 and 11 and sql server 2008)
In our 3 tier achitecture application, the WMS - server will send the geometries in form of a mapsuite feature list.
The server needs to get features using spatial and data criterias.
In the MapSuite core we don't found methods which gives features as result that combines spatial and data criterias.
The methods which gives features as result like SpatialQuery, GetFeaturesInsideBoundingBox only have spatial criteria
and the ohters, which combines both, like GetFeaturesByColumnValue or GetFeaturesByIds aren't sufficient for us. Our data criterias are more complex.
Question 1: Exists other methods whith result: features and input: spatial and data criterias.
We have problems by testing the oracleFeatureLayer.
When we use the ExecuteQuery method and the query contains a column from type SDO_GEOMETRY we get the error "Nicht unterstützten Oracle-Datentyp USERDEFINED gefunden." (Not supported Oracle datatype Userdefined found)
The function FeatureSource.GetCount gives the right number of rows in the table
The function FeatureSource.GetAllFeatures(ReturningColumnsType.AllColumns) we get the error "ORA-01747: Ungültige Angabe für benutzer.tabelle.spalte, tabelle.spalte oder spalte" (ORA-01747: ORA-01747: invalid user.table.column, table.column, or column specification)
After adding the oracle layer to the WpfMap and by calling the Refresh Method we get a NullReferenceException
We tested with oracle client version 10 and server version 10, client version only ODAC 11 and server 11
Question 2: Have you an idea what the problem is, we don't found information about the errors in internet.
By analysing the ExecuteQuery method from sqlFeatureLayer we noticed, that it allows queries with spatial and data criterias.
The result-table gives the results in database type format.
It means, that we need to convert the geometry columns in features. For SqlServerLayer it is easy, but for the OracleLayer it will be more difficult.
Question 3: Exists MapSuite Core methods for transforming database geometry data in features, do we have access to this functions?
Many thanks,
Guillaume.