Hey everyone,
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