/// <summary> /// Ogr to DotSpatial at geometry level /// </summary> /// <param name="geometry">Ogr Geometry</param> /// <returns>GeoAPI/DotSpatial IGeometry</returns> public static GeoAPI.Geometries.IGeometry Ogr2DSGeometry(OSGeo.OGR.Geometry geometry) { geometry.FlattenTo2D(); Byte[] wkbGeometry = new Byte[geometry.WkbSize()]; geometry.ExportToWkb(wkbGeometry, OSGeo.OGR.wkbByteOrder.wkbXDR); NetTopologySuite.IO.WKBReader wkbReader = new NetTopologySuite.IO.WKBReader(); return(wkbReader.Read(wkbGeometry)); }
private static Geometry ParseOgrGeometry(OgrGeometry ogrGeometry, GeoAPI.Geometries.IGeometryFactory factory) { if (ogrGeometry != null) { //Just in case it isn't 2D ogrGeometry.FlattenTo2D(); var wkbBuffer = new byte[ogrGeometry.WkbSize()]; ogrGeometry.ExportToWkb(wkbBuffer); var geom = GeometryFromWKB.Parse(wkbBuffer, factory); if (geom == null) { Debug.WriteLine("Failed to parse '{0}'", ogrGeometry.GetGeometryType()); } return(geom); } return(null); }
private static Geometry ParseOgrGeometry(OgrGeometry ogrGeometry) { if (ogrGeometry != null) { //Just in case it isn't 2D ogrGeometry.FlattenTo2D(); byte[] wkbBuffer = new byte[ogrGeometry.WkbSize()]; ogrGeometry.ExportToWkb(wkbBuffer); Geometry geom = GeometryFromWKB.Parse(wkbBuffer); if (geom == null) { Debug.WriteLine(string.Format("Failed to parse '{0}'", ogrGeometry.GetGeometryType())); } return(geom); } return(null); }
public void QueryShape(IGeometry pGeometry) { if (pGeometry == null) { return; } try { OSGeo.OGR.Geometry ogrGeometry = m_currentOGRFeature.GetGeometryRef(); // Flatten the geometry and ommit Z value until we add manual // Z-value zupport // See: // https://github.com/RBURHUM/arcgis-ogr/issues/11 // // ogrGeometry.FlattenTo2D(); //export geometry from OGR to WKB int wkbSize = ogrGeometry.WkbSize(); byte[] wkbBuffer = new byte[wkbSize]; ogrGeometry.ExportToWkb(wkbBuffer); //import geometry from WKB to ESRI Shape IWkb pWKB = pGeometry as IWkb; pWKB.ImportFromWkb(wkbSize, ref wkbBuffer[0]); pGeometry.SpatialReference = m_pDataset.SpatialReference; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(" Error: " + ex.Message); pGeometry.SetEmpty(); } }
private static Geometry ParseOgrGeometry(OgrGeometry ogrGeometry, GeoAPI.Geometries.IGeometryFactory factory) { if (ogrGeometry != null) { //Just in case it isn't 2D ogrGeometry.FlattenTo2D(); var wkbBuffer = new byte[ogrGeometry.WkbSize()]; ogrGeometry.ExportToWkb(wkbBuffer); var geom = GeometryFromWKB.Parse(wkbBuffer, factory); if (geom == null) Debug.WriteLine("Failed to parse '{0}'", ogrGeometry.GetGeometryType()); return geom; } return null; }
private static Geometry ParseOgrGeometry(OgrGeometry ogrGeometry) { if (ogrGeometry != null) { //Just in case it isn't 2D ogrGeometry.FlattenTo2D(); byte[] wkbBuffer = new byte[ogrGeometry.WkbSize()]; ogrGeometry.ExportToWkb(wkbBuffer); Geometry geom = GeometryFromWKB.Parse(wkbBuffer); if (geom == null) Debug.WriteLine(string.Format("Failed to parse '{0}'", ogrGeometry.GetGeometryType())); return geom; } return null; }