Example #1
0
        public void SimpleGeometryInsertQueryTest()
        {
            CreateSchema(System.Reflection.MethodBase.GetCurrentMethod().Name);

            var routeNetwork = new RouteNetworkHelper(_config["ConnectionString"], _schemaName);

            // Insert a node somewhere on the Endelave island
            var pntToInsert = new Point(579886, 6179972);

            routeNetwork.InsertNode(pntToInsert);

            // Try query it
            using var conn = new NpgsqlConnection(_config["ConnectionString"]);
            conn.Open();

            using (var cmd = new NpgsqlCommand("SELECT ST_AsBinary(coord) from " + _schemaName + ".route_node", conn))
                using (var reader = cmd.ExecuteReader())
                {
                    // read first row
                    reader.Read();

                    var pntRead = new WKBReader().Read((byte[])reader[0]);

                    Assert.Equal(pntToInsert, pntRead);
                }
        }
Example #2
0
        public WKTOrWKBReader(GeometryFactory geomFactory)
        {
            _wktReader = new WKTReader(geomFactory);
#pragma warning disable 612
            _wkbReader = new WKBReader();
#pragma warning restore 612
        }
        public void linearring_should_be_written_as_wkb()
        {
            IGeometryFactory factory  = GeometryFactory.Default;
            ILinearRing      expected = factory.CreateLinearRing(new[]
            {
                new Coordinate(0, 0),
                new Coordinate(10, 0),
                new Coordinate(10, 10),
                new Coordinate(0, 10),
                new Coordinate(0, 0)
            });

            WKBWriter writer = new WKBWriter();

            byte[] bytes = writer.Write(expected);
            Assert.That(bytes, Is.Not.Null);
            Assert.That(bytes, Is.Not.Empty);

            WKBReader reader = new WKBReader();
            IGeometry actual = reader.Read(bytes);

            Assert.That(actual, Is.Not.Null);
            Assert.That(actual, Is.EqualTo(expected));
            Assert.That(actual.OgcGeometryType, Is.EqualTo(expected.OgcGeometryType));

            // WKBReader reads "ILinearRing" geometries as ILineString
            Assert.That(expected, Is.InstanceOf <ILinearRing>());
            Assert.That(actual, Is.InstanceOf <ILineString>());
            Assert.That(actual.GeometryType, Is.Not.EqualTo(expected.GeometryType));
        }
Example #4
0
        public static GeoAPI.Geometries.IGeometry ConvertESRIToGeoAPI(IGeometry geometry)
        {
            byte[]    wkb    = ConvertGeometryToWKB(geometry);
            WKBReader reader = new WKBReader();

            return(reader.Read(wkb));
        }
Example #5
0
        public static string ConvertWKBToWKT(byte[] wkb)
        {
            WKTWriter writer = new WKTWriter();
            WKBReader reader = new WKBReader();

            return(writer.Write(reader.Read(wkb)));
        }
Example #6
0
        private static bool TestWktWkb(int number, IGeometryFactory factory, string wkt, string wkb)
        {
            var r       = new WKTReader(factory);
            var wktGeom = r.Read(wkt);
            var s       = new WKBReader(factory);
            var wkbGeom = s.Read(WKBReader.HexToBytes(wkb));

            try
            {
                Assert.AreEqual(wkb, WKBWriter.ToHex(wktGeom.AsBinary()), "wkb's don't match");
                Assert.IsTrue(DiscreteHausdorffDistance.Distance(wktGeom, wkbGeom) < 1e-9, number + ": DiscreteHausdorffDistance.Distance(wktGeom, wkbGeom) < 1e-9");
                if (!wktGeom.EqualsExact(wkbGeom))
                {
                    Assert.AreEqual(wkt, wktGeom.AsText(), number + ": wkt.Equals(wktGeom.AsText())");
                    var wktGeom2 = s.Read(wktGeom.AsBinary());
                    Assert.AreEqual(wkt, wktGeom2.AsText(), number + ": wkt.Equals(wktGeom2.AsText())");
                    var diff = wkbGeom.Difference(wktGeom);
                    Assert.IsTrue(false, number + ": wktGeom.EqualsExact(wkbGeom)\n" + diff.AsText());
                }
                return(false);
            }
            catch (AssertionException ex)
            {
                Console.WriteLine(ex.Message);
                return(true);
            }
        }
        public virtual LineString GetLineString()
        {
            var wkbReader  = new WKBReader();
            var geometry   = wkbReader.Read(Coord);
            var lineString = (LineString)geometry;

            return(lineString);
        }
        private void ConvertWKBToGeometry_Click(object sender, RoutedEventArgs e)
        {
            //这里需要读取wkb
            byte[]    wkbBytes = new byte[1024];
            WKBReader reader   = new WKBReader();

            NetTopologySuite.Geometries.Geometry geom = reader.Read(wkbBytes);
        }
        private static string ConvertWKBToWKT(byte[] wkbBytes)
        {
            WKBReader reader  = new WKBReader();
            WKTWriter writer  = new WKTWriter();
            var       wktText = writer.Write(reader.Read(wkbBytes));

            return(wktText);
        }
Example #10
0
        private static void TestBase64TextFile(Stream file)
        {
            byte[]   wkb       = ConvertBase64(file);
            var      wkbReader = new WKBReader();
            Geometry geom      = null;

            Assert.DoesNotThrow(() => geom = wkbReader.Read(wkb));
        }
        public static ExtendedWkbGeometry CreateEwkbFrom(WkbGeometry wkbGeometry)
        {
            var reader   = new WKBReader();
            var geometry = reader.Read(wkbGeometry);

            geometry.SRID = SpatialReferenceSystemId.Lambert72;
            return(new ExtendedWkbGeometry(WkbWriter.Write(geometry)));
        }
Example #12
0
 public WellKnownBinaryReader()
 {
     _wkbReader = new WKBReader(new NtsGeometryServices(
                                    GeometryConfiguration.GeometryFactory.CoordinateSequenceFactory,
                                    GeometryConfiguration.GeometryFactory.PrecisionModel,
                                    GeometryConfiguration.GeometryFactory.SRID
                                    )
                                );
 }
        public void Setup()
        {
            wkbreader = new WKBReader(factory);

            geometry0 = wkbreader.Read(test00_Geom0_WkbByteArray);
            Debug.WriteLine(geometry0.ToString());
            geometry1 = wkbreader.Read(test00_Geom1_WkbByteArray);
            Debug.WriteLine(geometry1.ToString());
        }
Example #14
0
        /// <summary>
        /// Opens the specified file
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public IFeatureSet Open(string fileName)
        {
            IFeatureSet fs = new FeatureSet();

            fs.Name     = Path.GetFileNameWithoutExtension(fileName);
            fs.Filename = fileName;
            using (var reader = new OgrDataReader(fileName))
            {
                // skip the geometry column which is always column 0
                for (int i = 1; i < reader.FieldCount; i++)
                {
                    string sFieldName = reader.GetName(i);
                    Type   type       = reader.GetFieldType(i);

                    int    uniqueNumber = 1;
                    string uniqueName   = sFieldName;
                    while (fs.DataTable.Columns.Contains(uniqueName))
                    {
                        uniqueName = sFieldName + uniqueNumber;
                        uniqueNumber++;
                    }
                    fs.DataTable.Columns.Add(new DataColumn(uniqueName, type));
                }

                var wkbReader = new WKBReader();
                while (reader.Read())
                {
                    var wkbGeometry = (byte[])reader["Geometry"];

                    var geometry = wkbReader.Read(wkbGeometry);

                    IFeature feature = new Feature(geometry);
                    feature.DataRow = fs.DataTable.NewRow();
                    for (int i = 1; i < reader.FieldCount; i++)
                    {
                        object value = reader[i];
                        if (value == null)
                        {
                            value = DBNull.Value;
                        }
                        feature.DataRow[i - 1] = value;
                    }
                    fs.Features.Add(feature);
                }

                try
                {
                    fs.Projection = reader.GetProj4ProjectionInfo();
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                }
            }

            return(fs);
        }
Example #15
0
 /// <summary>
 /// Method to read
 /// </summary>
 /// <param name="reader"></param>
 /// <param name="wkbReader"></param>
 /// <returns></returns>
 public static GpkgStandardBinary Read(BinaryReader reader, WKBReader wkbReader)
 {
     return(new GpkgStandardBinary
     {
         Header = GpkgBinaryHeader.Read(reader),
         WellKnownBytes = reader.ReadBytes((int)(reader.BaseStream.Length - reader.BaseStream.Position)),
         _wkbReader = wkbReader
     });
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="geomStr"></param>
        /// <returns></returns>
        /// <exception cref="ParseException"></exception>
        public IGeometry Read(String geomStr)
        {
            String trimStr = geomStr.Trim();

            if (IsHex(trimStr, MaxCharsToCheck))
            {
                return(_wkbReader.Read(WKBReader.HexToBytes(trimStr)));
            }
            return(_wktReader.Read(trimStr));
        }
Example #17
0
        /// <summary>
        /// 将Geometry转换成Wkt
        /// </summary>
        /// <param name="geometry">ArcGIS的IGeometry对象</param>
        /// <returns></returns>
        public static string ConvertGeometryToWkt(IGeometry geometry)
        {
            byte[]    b      = ConvertGeometryToWkb(geometry);
            WKBReader reader = new WKBReader();

            GeoAPI.Geometries.IGeometry g = reader.Read(b);
            WKTWriter writer = new WKTWriter();

            return(writer.Write(g));
        }
        public static IGeometry ToGeometry(this DbGeography self)
        {
            if (self == null)
            {
                return(null);
            }

            var reader = new WKBReader(NetTopologySuite.NtsGeometryServices.Instance);

            return(reader.Read(self.AsBinary()));
        }
        public void OracleWKBBigEndianReadTest()
        {
            Geometry result = null;

            using (Stream stream = new FileStream(blobFile, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                var wkbreader = new WKBReader();
                result = wkbreader.Read(stream);
            }
            Debug.WriteLine(result.ToString());
            Assert.IsNotNull(result);
        }
        private static void CheckWkbGeometry(byte[] wkb, String expectedWKT)
        {
            WKBReader wkbReader = new WKBReader();
            IGeometry g2        = wkbReader.Read(wkb);

            WKTReader reader   = new WKTReader();
            IGeometry expected = reader.Read(expectedWKT);

            bool isEqual = (expected.CompareTo(g2 /*, Comp2*/) == 0);

            Assert.IsTrue(isEqual);
        }
Example #21
0
        //returns geoJSON of boundaries from DB filters by type
        public string GetGeoJsonCollectionFromBoundaryCollection(ICollection <Boundary> collectionOfBoundaries, BoundaryType boundaryType)
        {
            //create GeoJSON writer
            GeoJsonWriter geoJsonWriter = new GeoJsonWriter();
            //create WKT Binary reader
            WKBReader wKBReader = new WKBReader();
            //create empty feature collection
            FeatureCollection features = new FeatureCollection();

            //setup return boundary flag
            bool returnBoundary = false;

            //iterate through collection
            foreach (Boundary boundary in collectionOfBoundaries)
            {
                returnBoundary = false;
                switch (boundaryType)
                {
                case BoundaryType.ALL:
                    returnBoundary = true;
                    break;

                case BoundaryType.COVERAGE:
                    if (boundary.isCoverageArea)
                    {
                        returnBoundary = true;
                    }
                    break;

                case BoundaryType.DISPLAY:
                    if (boundary.displayOnMap)
                    {
                        returnBoundary = true;
                    }
                    break;
                }
                if (returnBoundary)
                {
                    //set up feature attributes table
                    AttributesTable attributesTable = new AttributesTable();
                    //add attributes to table from boundary
                    attributesTable.AddAttribute("id", boundary.BoundaryId);
                    attributesTable.AddAttribute("Name", boundary.Name);
                    //convert DbGeometry to GeoApi.IGeometry
                    IGeometry iGeom = wKBReader.Read(boundary.Area.AsBinary());
                    //create feature from geom and attributes
                    Feature feature = new Feature(iGeom, attributesTable);
                    //add feature to feature collection
                    features.Add(feature);
                }
            }
            return(geoJsonWriter.Write(features));
        }
        /// <summary>
        ///
        /// </summary>
        public void Start()
        {
            try
            {
                Write(multiPoint.Area);
                Write(multiPoint.Boundary);
                Write(multiPoint.BoundaryDimension);
                Write(multiPoint.Centroid);
                Write(multiPoint.Coordinate);
                Write(multiPoint.Coordinates);
                Write(multiPoint.Dimension);
                Write(multiPoint.Envelope);
                Write(multiPoint.EnvelopeInternal);
                Write(multiPoint.Geometries.Length);
                Write(multiPoint.InteriorPoint);
                Write(multiPoint.IsEmpty);
                Write(multiPoint.IsSimple);
                Write(multiPoint.IsValid);
                Write(multiPoint.Length);
                Write(multiPoint.NumGeometries);
                Write(multiPoint.NumPoints);

                Write(multiPoint.Buffer(10));
                Write(multiPoint.Buffer(10, new BufferParameters {
                    EndCapStyle = EndCapStyle.Flat
                }));
                Write(multiPoint.Buffer(10, new BufferParameters {
                    EndCapStyle = EndCapStyle.Square
                }));
                Write(multiPoint.Buffer(10, 20));
                Write(multiPoint.Buffer(10, new BufferParameters(20)
                {
                    EndCapStyle = EndCapStyle.Flat
                }));
                Write(multiPoint.Buffer(10, new BufferParameters(20)
                {
                    EndCapStyle = EndCapStyle.Square
                }));
                Write(multiPoint.ConvexHull());

                byte[] bytes = multiPoint.AsBinary();
                var    test1 = new WKBReader().Read(bytes);
                Write(test1.ToString());

                bytes = new GDBWriter().Write(multiPoint);
                test1 = new GDBReader().Read(bytes);
                Write(test1.ToString());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #23
0
        static void Main(string[] args)
        {
            Geodatabase geo = Geodatabase.Open("");

            List <Table> tables = new List <Table>();

            List <string> featureClasses = geo.GetChildDatasets("\\", "Feature Class").ToList();

            foreach (string featureClassName in featureClasses)
            {
                tables.Add(geo.OpenTable(featureClassName));
            }

            string createTableSqlCommand = CreateTableColumns(tables[0].FieldInformation);

            FieldInfo fieldInfo = tables[0].FieldInformation;
            var       fields    = new List <string>();

            for (int i = 0; i < fieldInfo.Count; i++)
            {
                fields.Add(fieldInfo.GetFieldName(i));
            }

            var           countStatements = $"SELECT * FROM VAULTSCOT_AUTH_POINT_OCT18";
            RowCollection rows            = geo.ExecuteSQL(countStatements);
            WKBReader     reader          = new WKBReader();

            foreach (Row row in rows)
            {
                MultiPointShapeBuffer geometry = row.GetGeometry();
                var point = geometry.Points;
                //MULTIPOINT (295512,712727,0) throwing format exception - Resolved in upcoming commit.
                var geometryWKT = processMultiPointBuffer(geometry);
            }

            var           countEnumerator = rows.GetEnumerator();
            List <object> fieldValues     = new List <object>();

            if (rows != null)
            {
                countEnumerator.MoveNext();
                var shape = countEnumerator.Current["Shape"];

                for (int i = 0; i < fieldInfo.Count - 1; i++)
                {
                    var count = countEnumerator.Current[fields[i]];
                    fieldValues.Add(count);
                }
            }

            InsertTableValues(fieldValues, fieldInfo);
        }
        private static IGeometry FromWkb(string wkb, IGeometry clip = null)
        {
            WKBReader reader = new WKBReader(GeometryFactory.Default);

            byte[]    bytes = WKBReader.HexToBytes(wkb);
            IGeometry geom  = reader.Read(bytes);

            if (clip != null)
            {
                geom = geom.Intersection(clip);
            }
            return(geom);
        }
Example #25
0
        private static Geometry FromWkb(string wkb, Geometry clip = null)
        {
            var reader = new WKBReader();

            byte[] bytes = WKBReader.HexToBytes(wkb);
            var    geom  = reader.Read(bytes);

            if (clip != null)
            {
                geom = geom.Intersection(clip);
            }
            return(geom);
        }
        private static void TestBase64TextFile(string file)
        {
            if (!File.Exists(file))
            {
                Assert.Ignore("File not present ({0})", file);
                return;
            }

            byte[]    wkb       = ConvertBase64(file);
            WKBReader wkbReader = new WKBReader();
            IGeometry geom      = null;

            Assert.DoesNotThrow(() => geom = wkbReader.Read(wkb));
        }
Example #27
0
 /// <summary>
 /// Returns the geometry corresponding to the Object ID
 /// </summary>
 /// <param name="oid">Object ID</param>
 /// <returns>geometry</returns>
 public override Geometry GetGeometryByID(uint oid)
 {
     using (var ogrLayer = GetLayer(_layerIndex))
         using (var ogrFeature = ogrLayer.GetFeature((int)oid))
         {
             using (var gr = ogrFeature.GetGeometryRef())
             {
                 var reader = new WKBReader(Factory);
                 //var g = ParseOgrGeometry(gr, Factory);
                 var g = new OgrGeometryReader(Factory).Read(gr);
                 return(g);
             }
         }
 }
        public virtual string GetGeoJsonCoordinate()
        {
            var wkbReader  = new WKBReader();
            var geometry   = wkbReader.Read(Coord);
            var point      = (Point)geometry;
            var serializer = GeoJsonSerializer.Create();

            using (var stringWriter = new StringWriter())
            {
                serializer.Serialize(stringWriter, point);
                var geoJson = stringWriter.ToString();
                return(JObject.Parse(geoJson)["coordinates"].ToString(Formatting.None));
            };
        }
Example #29
0
        /// <summary>
        /// Creates an instance of this class using the provided decorator strings
        /// </summary>
        /// <param name="entityDecoratorFormat">The format string to decorate database entities</param>
        /// <param name="literalDecoratorFormat">The format string to decorate literals (strings)</param>
        /// <param name="parameterDecoratorFormat">The format string to decorate parameters</param>
        /// <param name="reader"> </param>
        /// <param name="writer"> </param>
        public SpatialDbUtility(string entityDecoratorFormat, string literalDecoratorFormat, string parameterDecoratorFormat,
                                WKBReader reader, WKBWriter writer)
        {
            EntityDecoratorFormat    = entityDecoratorFormat;
            LiteralDecoratorFormat   = literalDecoratorFormat;
            ParameterDecoratorFormat = parameterDecoratorFormat;

            //This won't do anything to the geometry
            ToEnvelopeDecoratorFormat = "{0}";
            ToGeometryDecoratorFormat = "{0}";
            SetSridDecoratorFormat    = "{0}";
            TransformDecoratorFormat  = "{0}";

            Reader = reader;
            Writer = writer;
        }
        /// <summary>
        /// Creates a <see cref="NetTopologySuite.Geometries.Geometry"/> based on the Well-known binary representation.
        /// </summary>
        /// <param name="reader">A <see cref="System.IO.BinaryReader">BinaryReader</see> used to read the Well-known binary representation.</param>
        /// <param name="factory">The factory to create the result geometry</param>
        /// <returns>A <see cref="NetTopologySuite.Geometries.Geometry"/> based on the Well-known binary representation.</returns>
        public static Geometry Parse(BinaryReader reader, GeometryFactory factory)
        {
            WKBReader wkb = new WKBReader();

            return(wkb.Read(reader.BaseStream));

            /*
             * // Get the first Byte in the array. This specifies if the WKB is in
             * // XDR (big-endian) format of NDR (little-endian) format.
             * var byteOrder = reader.ReadByte();
             *
             * // Get the type of this geometry.
             * var type = ReadUInt32(reader, (WkbByteOrder) byteOrder);
             *
             * switch ((WKBGeometryType) type)
             * {
             *  case WKBGeometryType.wkbPoint:
             *      return CreateWKBPoint(reader, (WkbByteOrder) byteOrder, factory);
             *
             *  case WKBGeometryType.wkbLineString:
             *      return CreateWKBLineString(reader, (WkbByteOrder)byteOrder, factory);
             *
             *  case WKBGeometryType.wkbPolygon:
             *      return CreateWKBPolygon(reader, (WkbByteOrder)byteOrder, factory);
             *
             *  case WKBGeometryType.wkbMultiPoint:
             *      return CreateWKBMultiPoint(reader, (WkbByteOrder)byteOrder, factory);
             *
             *  case WKBGeometryType.wkbMultiLineString:
             *      return CreateWKBMultiLineString(reader, (WkbByteOrder)byteOrder, factory);
             *
             *  case WKBGeometryType.wkbMultiPolygon:
             *      return CreateWKBMultiPolygon(reader, (WkbByteOrder)byteOrder, factory);
             *
             *  case WKBGeometryType.wkbGeometryCollection:
             *      return CreateWKBGeometryCollection(reader, (WkbByteOrder)byteOrder, factory);
             *
             *  default:
             *      if (!Enum.IsDefined(typeof (WKBGeometryType), type))
             *          throw new ArgumentException("Geometry type not recognized");
             *      else
             *          throw new NotSupportedException("Geometry type '" + type + "' not supported");
             * }
             */
        }