static void ReadCities() { using (var db = new Tests.PostGisTestDataConnection(ConnectionString)) { var point = new NTSGS.Point(new NTSGS.Coordinate(0, 7200000)) { SRID = 3857 }; var nearestCity = db.OwmCities .OrderBy(c => c.Geometry.STDistance(point)) .First(); Console.WriteLine($"Nearest city: [{nearestCity.Id}] '{nearestCity.Name}'"); var query = db.OwmCities .Select(c => new { Id = c.Id, Name = c.Name, NumPoints = c.Geometry.STNPoints(), Srid = c.Geometry.STSrId(), Area = c.Geometry.STArea(), Distance = c.Geometry.STDistance(point), Wkt = c.Geometry.STAsText(), EWkt = c.Geometry.STAsEWKT(), }); var list = query.ToList(); foreach (var c in list) { Console.WriteLine($"[{c.Id}] '{c.Name}'\tDistance: {c.Distance:0}\tSRID={c.Srid}\t{c.Wkt}"); } } }
static void Main(string[] args) { (new Tests.TestsBase()).InsertTestData(); var connectionString = ConfigurationManager.ConnectionStrings["postgistest"]; using (dbPostGis = new Tests.PostGisTestDataConnection(connectionString.ProviderName, connectionString.ConnectionString)) { Console.WriteLine($"PostGIS Version: {dbPostGis.GetPostGisVersion()}"); Console.WriteLine($"PostGIS full version: {dbPostGis.GetPostGisFullVersion()}"); var result = dbPostGis.PostgisGeometries .Select(gt => new { Id = gt.Id, SrId = gt.Geometry.STSrId(), GeomEWKT = gt.Geometry.STAsEWKT(), Wkb = gt.Geometry.STAsBinary(), Wkt = gt.Geometry.STAsText(), GeoJSON = gt.Geometry.STAsGeoJSON(), IsSimple = gt.Geometry.STIsSimple(), IsValid = gt.Geometry.STIsValid(), // TODO: ST_IsRing() should only be called on a linear feature IsRing = gt.Geometry.StIsRing(), GeometryType = gt.Geometry.GeometryType(), NDims = gt.Geometry.STNDims(), Area = gt.Geometry.STArea(), Perimeter = gt.Geometry.STPerimeter(), Centroid = gt.Geometry.STCentroid(), Distance = gt.Geometry.STDistance(gt.Geometry), NumPoints = gt.Geometry.STNPoints(), Envelope = gt.Geometry.STEnvelope(), RawGeometry = gt.Geometry, Buffer = gt.Geometry.STBuffer(10.0), }) .ToArray(); foreach (var e in result) { Console.WriteLine($"{e.Id} '{e.GeomEWKT}' WKB[{e.Wkb.Length}] SRID={e.SrId} NPoints={e.NumPoints}"); } } Console.ReadKey(); }