Opened 15 years ago

Closed 15 years ago

#540 closed enhancement (fixed)

Add XYZM functions to ArcSDE, MySQL, SQLServerSpatial and WFS

Reported by: brentrobinson Owned by: brentrobinson
Priority: major Milestone: 3.5.0
Component: General Version: 3.5.0
Severity: 2 Keywords: Expression X Y Z M function ArcSDE MySQL SQLServerSpatial WFS
Cc: External ID:

Description

The X, Y, Z and M functions can be used to get various ordinates from a feature geometry. These functions work only on point geometries (they always return NULL for other geometries).

These functions are currently supported by the SDF, SHP and SQLite providers.

This ticket will add support for these functions to the ArcSDE, MySQL, SQLServerSpatial and WFS providers.

Change History (3)

comment:1 by brentrobinson, 15 years ago

Status: newassigned

Revision: 4837 Author: brentrobinson Date: 8:27:41 AM, Thursday, July 16, 2009 Message: Ticket#540: Added XYZM functions to the MySQL, ODBC, SQLServerSpatial and WFS providers. The following components were effected:

Expression Engine:

Made X, Y, Z and M functions standard since they are now supported by most providers.

MySQL Provider:

Evaluate X and Y functions natively.

Evaluate Z and M functions by Expression Engine. However, the MySQL provider only supports 2D geometries so these functions will always return NULL.

ODBC Provider

Evaluate X, Y, Z and M functions through the Expression Engine. Although not in scope, it was easier to add support than disable it.

In the future, it would be possible to evaluate these functions natively since one would simply need to retrieve the X, Y or Z column value.

SQLServerSpatial Provider:

Evaluate Z and M functions natively.

Evaluate X and Y functions by Expression Engine.SQL Server 2008's X and Y functions do not work for geometries with geodetic coordinate system.

SDF Provider

Removed custom code to add XYZM functions to supported list. They are now picked up as standard functions.

Moved part of ExpressionFunctionTest code down to Utilities\TestCommon so it can be shared with RDBMS and WFS unit tests.

SHP Provider:

Removed custom code to add XYZM functions to supported list. They are now picked up as standard functions.

WFS Provider:

Evaluate X, Y, Z and M functions (in select properties) by Expression Engine. WFS does not support computed properties in select list so not possible to evaluate natively. The Expression Engine was added to the WFS provider.

Ealuate X, Y, Z and M functions (in filter) natively. TODO: evaluate these by Expression Engine when underlying WFS does not support them. However, we would first have to add the parsing of supported functions from the WFS capabilities to be able to determine if the functions are supported or not.

Added XYZM function unit test.

None of the other standard functions were added to the WFS Provider's list of supported functions as advertise through capabilities.


Modified : /trunk/Utilities/ExpressionEngine/Src/ExpressionEngineInitializeClass.h Modified : /trunk/Utilities/TestCommon/CMakeLists.txt Added : /trunk/Utilities/TestCommon/Inc/TestCommonExpressionFunction.h Added : /trunk/Utilities/TestCommon/Inc/TestCommonExpressionFunctionR.h Added : /trunk/Utilities/TestCommon/Inc/TestCommonExpressionFunctionW.h Modified : /trunk/Utilities/TestCommon/Makefile.am Added : /trunk/Utilities/TestCommon/Src/TestCommonExpressionFunction.cpp Added : /trunk/Utilities/TestCommon/Src/TestCommonExpressionFunctionR.cpp Added : /trunk/Utilities/TestCommon/Src/TestCommonExpressionFunctionW.cpp Modified : /trunk/Utilities/TestCommon/TestCommon.vcproj

Revision: 4838 Author: brentrobinson Date: 8:31:02 AM, Thursday, July 16, 2009 Message: Ticket#540: added the XYZM functions to the MySQL, ODBC, SQLServerSpatial and WFS providers. See revision 4837 for more details.


Modified : /trunk/Providers/GenericRdbms/Src/MySQL/Fdo/FdoRdbmsMySqlFilterProcessor.cpp Modified : /trunk/Providers/GenericRdbms/Src/ODBC/Fdo/FdoRdbmsOdbcFilterProcessor.cpp Modified : /trunk/Providers/GenericRdbms/Src/SQLServerSpatial/Fdo/FdoRdbmsSqlServerFilterProcessor.cpp Modified : /trunk/Providers/GenericRdbms/Src/SQLServerSpatial/Fdo/FdoRdbmsSqlServerFilterProcessor.h Modified : /trunk/Providers/GenericRdbms/Src/UnitTest/Common/FdoExpressionFunctionTest.cpp Modified : /trunk/Providers/GenericRdbms/Src/UnitTest/Common/FdoExpressionFunctionTest.h Modified : /trunk/Providers/GenericRdbms/Src/UnitTest/Common/SchemaMgrTests.cpp Modified : /trunk/Providers/GenericRdbms/Src/UnitTest/Odbc/OdbcFdoConnectTest.cpp Added : /trunk/Providers/GenericRdbms/Src/UnitTest/gen_default1_SqlServer2008_master.txt Modified : /trunk/Providers/SHP/Src/Provider/ShpConnection.cpp Modified : /trunk/Providers/SHP/Src/Provider/ShpExpressionCapabilities.cpp Modified : /trunk/Providers/WFS/Src/Makefile.am Modified : /trunk/Providers/WFS/Src/Provider/CMakeLists.txt Modified : /trunk/Providers/WFS/Src/Provider/FdoWfsCommandCapabilities.cpp Modified : /trunk/Providers/WFS/Src/Provider/FdoWfsExpressionCapabilities.cpp Modified : /trunk/Providers/WFS/Src/Provider/FdoWfsSelectCommand.cpp Modified : /trunk/Providers/WFS/Src/Provider/Makefile.am Modified : /trunk/Providers/WFS/Src/Provider/WFSProvider.vcproj Modified : /trunk/Providers/WFS/Src/WFSOS.sln

Revision: 4839 Author: brentrobinson Date: 8:32:24 AM, Thursday, July 16, 2009 Message: Ticket#540: Made XYZM functions standard. See revision 4837 for more details.


Modified : /trunk/Providers/SDF/Src/Provider/SdfConnection.cpp Modified : /trunk/Providers/SDF/Src/Provider/SdfExpressionCapabilities.cpp Modified : /trunk/Providers/SDF/Src/UnitTest/FdoExpressionFunctionTest.cpp Modified : /trunk/Providers/SDF/Src/UnitTest/FdoExpressionFunctionTest.h

comment:2 by brentrobinson, 15 years ago

Revision: 4848 Author: brentrobinson Date: 2:58:02 PM, Thursday, July 16, 2009 Message: Ticket#540: SQLite: XYZM Function fixes.

Modified xyzmFunc() extension function implementation to return NULL to SQLite when the ordinate is NULL or undefined.

Expanded FgFPoint structure to 4 ordinates. FgfPoint is used to parse out coordinates from a Geometry FGF. A point will have 4 ordinates when both Z and M are defined.

Added unit test for XYZM functions.


Modified : /trunk/Providers/SQLite/Src/Provider/SltExprExtensions.cpp Modified : /trunk/Providers/SQLite/Src/SpatialIndex/SltGeomUtils.h Added : /trunk/Providers/SQLite/Src/UnitTest/FdoExpressionFunctionTest.cpp Added : /trunk/Providers/SQLite/Src/UnitTest/FdoExpressionFunctionTest.h Modified : /trunk/Providers/SQLite/Src/UnitTest/Makefile.am Modified : /trunk/Providers/SQLite/Src/UnitTest/UnitTest.vcproj

Revision: 4847 Author: brentrobinson Date: 2:55:51 PM, Thursday, July 16, 2009 Message: Ticket#540: Added featid to select property list. SQLite provider does not add it automatically.


Modified : /trunk/Utilities/TestCommon/Src/TestCommonExpressionFunction.cpp

comment:3 by brentrobinson, 15 years ago

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.