I have a points layer with X,Y fields, each time I add a point I should perform "calculate geometry" to calculate the coordinates of the new points.
Is there a way to handle this automatically via a spatial view in SQL Server using a certain geometry function?
Any help is appreciated!
This is typically done using a SQL trigger that listens for incoming geometries either from editing a map document or inserting geometries with SQL. When using a native DBMS spatial type such as SQL Server Geometry or Postgres' PostGIS type, constructor functions and spatial operator functions are provided that allow one to query different spatial properties.
For instance, in SQL Server we can use the
functions for Geography types or
shape.X and shape.Y
for Geometry types on a spatial column called "shape".
Here is a simple SQL Server Geography example using shape.Lat and shape.Long. to update columns called "latitude" and "longitude" with their respective values. This sample is provided AS IS and must be properly tested before implementing in a production environment.
CREATE TRIGGER [gis].[Insert_xy_if_geometry_fc] ON [gis].[Landmark_fc] AFTER INSERT ,UPDATE AS UPDATE pt SET pt.latitude = i.Shape.Lat ,pt.longitude = i.Shape.Long FROM Landmark_fc AS pt INNER JOIN ( SELECT objectid ,Shape FROM inserted WHERE (Shape IS NOT NULL) ) AS i ON i.objectid = pt.objectid; RETURN GO