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}");
                }
            }
        }
示例#2
0
        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();
        }