private static bool TestWktWkb(int number, IGeometryFactory factory, string wkt, string wkb)
        {
            WKTReader r       = new WKTReader(factory);
            IGeometry wktGeom = r.Read(wkt);
            WKBReader s       = new WKBReader(factory);
            IGeometry 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 void TestPolygonEmpty()
        {
            WKTReader reader = new WKTReader();
            IGeometry geom   = reader.Read("POLYGON EMPTY");

            CheckWkbGeometry(geom.AsBinary(), "POLYGON EMPTY");
        }
 public static DbGeometry ToDbGeometry(this IGeometry self)
 {
     if (self == null)
     {
         return(null);
     }
     return(DbGeometry.FromBinary(self.AsBinary()));
 }
        public static void Run()
        {
            //ExStart: SpecifyWkbVariantOnTranslation
            IGeometry geometry = Geometry.FromText("LINESTRING (1.2 3.4, 5.6 7.8)");

            byte[] wkb = geometry.AsBinary(WkbVariant.ExtendedPostGis);
            File.WriteAllBytes(Path.Combine(RunExamples.GetDataDir(), "EWkbFile.ewkb"), wkb);
            //ExEnd: SpecifyWkbVariantOnTranslation
        }
Exemple #5
0
        /// <summary>
        /// Generates a new feature row using only the goemetry.
        /// </summary>
        /// <param name="geometry">The byte form of the well known text to use in creating a new, otherwise empty row.</param>
        /// <returns>The newly created FeatureRow with the specified well known text.</returns>
        public FeatureRow AddFeatureRow(IGeometry geometry)
        {
            FeatureRow rowFeatureRow = (FeatureRow)NewRow();

            object[] columnValuesArray = { null, geometry.AsBinary() };
            rowFeatureRow.Geometry  = geometry;
            rowFeatureRow.ItemArray = columnValuesArray;
            Rows.Add(rowFeatureRow);
            return(rowFeatureRow);
        }
Exemple #6
0
        public static void Run()
        {
            //ExStart: TranslateGeometryToWkb
            IGeometry geometry = Geometry.FromText("LINESTRING (1.2 3.4, 5.6 7.8)");

            byte[] wkb = geometry.AsBinary();
            //File.WriteAllBytes(Path.Combine(TestConfiguration.TestOutputPath, "file.wkb"), wkb);
            File.WriteAllBytes(Path.Combine(RunExamples.GetDataDir(), "WkbFile.wkb"), wkb);
            //ExEnd: TranslateGeometryToWkb
        }
        public static DbGeography ToDbGeography(this IGeometry self)
        {
            if (self == null)
            {
                return(null);
            }
            if (self.SRID != 4326)
            {
                throw new ArgumentException();
            }

            return(DbGeography.FromBinary(self.AsBinary()));
        }
        public void GeomBinOpTest_Issue14_00_Simplified_WkbWkt()
        {
            string    wktStr        = geometry0.AsText();
            WKTReader wktReader     = new WKTReader();
            IGeometry geometry0_bis = wktReader.Read(wktStr);

            byte[] test00_Geom0_WkbByteArray_bis = geometry0_bis.AsBinary();
            Assert.AreEqual(test00_Geom0_WkbByteArray.Length, test00_Geom0_WkbByteArray_bis.Length, "Different wkb array length.");
            for (int i = 0; i < test00_Geom0_WkbByteArray_bis.Length; i++)
            {
                Assert.AreEqual(test00_Geom0_WkbByteArray[i], test00_Geom0_WkbByteArray_bis[i], "Different wkb array element at index " + i + ".");
            }
        }
Exemple #9
0
        public void Convert()
        {
            IGeometry gML0 = GeometryFromWKT.Parse(multiLinestring);
            IGeometry gLi0 = GeometryFromWKT.Parse(linestring);
            IGeometry gPl0 = GeometryFromWKT.Parse(polygon);
            IGeometry gPn0 = GeometryFromWKT.Parse(point);
            IGeometry gMp0 = GeometryFromWKT.Parse(multipoint);
            IGeometry gML1 = GeometryFromWKB.Parse(gML0.AsBinary());
            IGeometry gLi1 = GeometryFromWKB.Parse(gLi0.AsBinary());
            IGeometry gPl1 = GeometryFromWKB.Parse(gPl0.AsBinary());
            IGeometry gPn1 = GeometryFromWKB.Parse(gPn0.AsBinary());
            IGeometry gMp1 = GeometryFromWKB.Parse(gMp0.AsBinary());

            Assert.AreEqual(gML0, gML1);
            Assert.AreEqual(gLi0, gLi1);
            Assert.AreEqual(gPl0, gPl1);
            Assert.AreEqual(gPn0, gPn1);
            Assert.AreEqual(gMp0, gMp1);
        }
Exemple #10
0
        private string BuildGeometry(IGeometry geometry, SqlCommand command)
        {
            var res = "ST.GeomFromWKB(@PGeom,@PTargetSrid)";

            var needsTransform = NeedsTransform;

            command.Parameters.AddRange(
                new[]
            {
                new SqlParameter("@PGeom", geometry.AsBinary()),
                new SqlParameter("@PTargetSrid", needsTransform ? TargetSRID : SRID)
            });

            if (needsTransform)
            {
                res = string.Format("ST.Transform({0}, @PSrid)", res);
                command.Parameters.AddWithValue("@PSrid", SRID);
            }

            return(res);
        }
Exemple #11
0
 /// <summary>
 /// Returns the Well-known Binary representation of this <c>Geometry</c>.
 /// For a definition of the Well-known Binary format, see the OpenGIS Simple
 /// Features Specification.
 /// </summary>
 /// <returns>The Well-known Binary representation of this <c>Geometry</c>.</returns>
 public virtual byte[] ToBinary()
 {
     return(_basicGeometry.AsBinary());
 }
Exemple #12
0
        private string BuildGeometry(IGeometry geometry, SqlCommand command)
        {
            var res = "ST.GeomFromWKB(?,?)";

            var needsTransform = NeedsTransform;
            command.Parameters.AddRange(
                new[]
                    {
                        new SqlParameter("@PGeom", geometry.AsBinary()),
                        new SqlParameter("@PTargetSrid", needsTransform ? TargetSRID : SRID)
                    });

            if (needsTransform)
            {
                res = string.Format("ST.Transform({0}, ?)", res);
                command.Parameters.AddWithValue("@PSrid", SRID);
            }

            return res;
        }
 public static IGeometry Copy(this IGeometry original)
 {
     return(Geometry.GeomFromWKB(original.AsBinary()));
 }
Exemple #14
0
 /// <summary>
 /// Stores the goemetry as WKB, overwriting any existing value.
 /// </summary>
 public void StoreGeometry()
 {
     this[_featureTable.GeometryColumn] = _geometry.AsBinary();
 }