I’m currently working on a prototype using .net core, sql server, ef and NetTopologySuite to handle locations. While trying to save a location I ran into the following error:
Geography: one of the identified items was in an invalid format
My code was as follows:
using GeoAPI.Geometries; using NetTopologySuite; using NetTopologySuite.Geometries; ... var geometryFactory = NtsGeometryServices.Instance.CreateGeometryFactory(srid: 4326); ... Location = geometryFactory.CreatePoint(new Coordinate(request.Lat, request.Lng)) ...
The solution ended up being pretty straight-forward. Simply swap the latitude and longitude values when creating a coordinate:
Location = geometryFactory.CreatePoint(new Coordinate(request.Lat, request.Lng)) // Use this instead Location = geometryFactory.CreatePoint(new Coordinate(request.Lng, request.Lat))
This is mentioned pretty clearly when reading the documents but I somehow skipped over it. Hopefully this will be able to help out anyone else who does the same thing!
Official docs: https://docs.microsoft.com/sv-se/ef/core/modeling/spatial