コード例 #1
0
 private static void SharpMapGeometryCollectionToSqlGeometry(SqlGeometryBuilder geomBuilder, SMGeometryCollection geometryCollection)
 {
     geomBuilder.BeginGeometry(OpenGisGeometryType.GeometryCollection);
     for (int i = 0; i < geometryCollection.NumGeometries; i++ )
         SharpMapGeometryToSqlGeometry(geomBuilder, geometryCollection.Geometry(i));
     geomBuilder.EndGeometry();
 }
コード例 #2
0
 internal static SharpMap.Geometries.GeometryCollection ToSharpMapGeometryCollection(GisSharpBlog.NetTopologySuite.Geometries.GeometryCollection geometryCollection)
 {
     SharpMap.Geometries.GeometryCollection collection = new SharpMap.Geometries.GeometryCollection();
     foreach (GisSharpBlog.NetTopologySuite.Geometries.Geometry geometry in geometryCollection.Geometries)
     {
         collection.Collection.Add(ToSharpMapGeometry(geometry));
     }
     return(collection);
 }
コード例 #3
0
        /*
         * private static OpenGisGeometryType ParseGeometryType(string stGeometryType)
         * {
         *  switch (stGeometryType.ToUpper())
         *  {
         *      case "POINT":
         *          return OpenGisGeometryType.Point;
         *      case "LINESTRING":
         *          return OpenGisGeometryType.LineString;
         *      case "POLYGON":
         *          return OpenGisGeometryType.Polygon;
         *      case "MULTIPOINT":
         *          return OpenGisGeometryType.MultiPoint;
         *      case "MULTILINESTRING":
         *          return OpenGisGeometryType.MultiLineString;
         *      case "MULTIPOLYGON":
         *          return OpenGisGeometryType.MultiPolygon;
         *      case "GEOMETRYCOLLECTION":
         *          return OpenGisGeometryType.GeometryCollection;
         *  }
         *  throw new ArgumentException(String.Format("Invalid geometrytype '{0}'!", stGeometryType), "stGeometryType");
         * }
         */

        private static SMGeometryCollection SqlGeometryToSharpMapGeometryCollection(SqlGeometry geometry)
        {
            SMGeometryCollection geometryCollection = new SMGeometryCollection();

            for (int i = 1; i <= geometry.STNumGeometries(); i++)
            {
                geometryCollection.Collection.Add(ToSharpMapGeometry(geometry.STGeometryN(i)));
            }
            return(geometryCollection);
        }
コード例 #4
0
        internal static GisSharpBlog.NetTopologySuite.Geometries.GeometryCollection ToNTSGeometryCollection(SharpMap.Geometries.GeometryCollection geometryCollection,
                                                                                                            GisSharpBlog.NetTopologySuite.Geometries.GeometryFactory factory)
        {
            GisSharpBlog.NetTopologySuite.Geometries.Geometry[] geometries = new GisSharpBlog.NetTopologySuite.Geometries.Geometry[geometryCollection.Collection.Count];
            int index = 0;

            foreach (SharpMap.Geometries.Geometry geometry in geometryCollection.Collection)
            {
                geometries[index++] = ToNTSGeometry(geometry, factory);
            }
            return(factory.CreateGeometryCollection(geometries) as GisSharpBlog.NetTopologySuite.Geometries.GeometryCollection);
        }
コード例 #5
0
 internal static SharpMap.Geometries.GeometryCollection ToSharpMapGeometryCollection(GisSharpBlog.NetTopologySuite.Geometries.GeometryCollection geometryCollection)
 {
     SharpMap.Geometries.GeometryCollection collection = new SharpMap.Geometries.GeometryCollection();
     foreach (GisSharpBlog.NetTopologySuite.Geometries.Geometry geometry in geometryCollection.Geometries)
         collection.Collection.Add(ToSharpMapGeometry(geometry));
     return collection;
 }
コード例 #6
0
 private static SMGeometryCollection SqlGeometryToSharpMapGeometryCollection(SqlGeometry geometry)
 {
     SMGeometryCollection geometryCollection = new SMGeometryCollection();
     for(int i = 0; i < geometry.STNumGeometries(); i++)
         geometryCollection.Collection.Add(ToSharpMapGeometry(geometry.STGeometryN(i)));
     return geometryCollection;
 }
コード例 #7
0
 private static void SharpMapGeometryCollectionToSqlGeometry(SqlGeometryBuilder geomBuilder, SMGeometryCollection geometryCollection)
 {
     geomBuilder.BeginGeometry(OpenGisGeometryType.GeometryCollection);
     for (int i = 0; i < geometryCollection.NumGeometries; i++)
     {
         SharpMapGeometryToSqlGeometry(geomBuilder, geometryCollection.Geometry(i));
     }
     geomBuilder.EndGeometry();
 }
コード例 #8
0
ファイル: SpatialQuery.cs プロジェクト: goranpavlovic/Gis
        private void button1_Click(object sender, EventArgs e)
        {
            if (_cmbLayer1.SelectedIndex >= 0 && _cmbLayer2.SelectedIndex >= 0 && _cmbOperation.SelectedIndex >= 0)
            {
                //obrada forme
                if (_cmbOperation.SelectedIndex == 0) //intersect
                {
                    SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet();
                    SharpMap.Layers.VectorLayer layer1 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer1.SelectedItem.ToString());
                    SharpMap.Layers.VectorLayer layer2 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer2.SelectedItem.ToString());

                    SharpMap.Data.Providers.NtsProvider nts = new SharpMap.Data.Providers.NtsProvider(layer1.DataSource);
                    SharpMap.Data.Providers.NtsProvider nts2 = new SharpMap.Data.Providers.NtsProvider(layer2.DataSource);

                    SharpMap.Geometries.GeometryCollection coll = new SharpMap.Geometries.GeometryCollection();
                    ds.Tables.Clear();

                    SharpMap.Data.FeatureDataSet set = new SharpMap.Data.FeatureDataSet();
                    nts.GetFeaturesInView(nts.GetExtents(), set);

                    SharpMap.Data.FeatureDataSet res = new SharpMap.Data.FeatureDataSet();
                    res.Tables.Add(set.Tables[0].Clone());
                    res.Tables[0].Rows.Clear();

                    ds.Tables.Clear();
                    foreach (SharpMap.Data.FeatureDataRow row in set.Tables[0].Rows)
                    {
                        nts2.ExecuteIntersectionQuery(row.Geometry, ds);

                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            SharpMap.Data.FeatureDataRow red = res.Tables[0].NewRow();
                            red.Geometry = row.Geometry;
                            red.ItemArray = row.ItemArray;
                            res.Tables[0].AddRow(red);
                        }
                        ds.Tables.Clear();
                    }

                    LayerInfo l = new LayerInfo(res.Tables[0]);
                    l.Show();

                    SharpMap.Data.Providers.GeometryFeatureProvider prov = new SharpMap.Data.Providers.GeometryFeatureProvider(res.Tables[0]);

                    SharpMap.Layers.VectorLayer lay = new SharpMap.Layers.VectorLayer("selected layer", prov);
                    lay.Style.Fill = Brushes.Yellow;
                    SharpMap.Layers.ILayer layerToRemove = _map.GetLayerByName("selected layer");
                    if (layerToRemove != null)
                    {
                        _map.Layers.Remove(layerToRemove);
                    }
                    _map.Layers.Add(lay);
                    this._parent.RefreshMap();
                }
                else if (_cmbOperation.SelectedIndex == 1)//within
                {
                    SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet();
                    SharpMap.Layers.VectorLayer layer1 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer1.SelectedItem.ToString());
                    SharpMap.Layers.VectorLayer layer2 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer2.SelectedItem.ToString());

                    SharpMap.Data.Providers.NtsProvider nts = new SharpMap.Data.Providers.NtsProvider(layer1.DataSource);
                    SharpMap.Data.Providers.NtsProvider nts2 = new SharpMap.Data.Providers.NtsProvider(layer2.DataSource, CreateBuffers);

                    SharpMap.Geometries.GeometryCollection coll = new SharpMap.Geometries.GeometryCollection();
                    ds.Tables.Clear();

                    SharpMap.Data.FeatureDataSet set = new SharpMap.Data.FeatureDataSet();
                    nts.GetFeaturesInView(nts.GetExtents(), set);

                    SharpMap.Data.FeatureDataSet res = new SharpMap.Data.FeatureDataSet();
                    res.Tables.Add(set.Tables[0].Clone());
                    res.Tables[0].Rows.Clear();

                    ds.Tables.Clear();
                    foreach (SharpMap.Data.FeatureDataRow row in set.Tables[0].Rows)
                    {
                        nts2.ExecuteIntersectionQuery(row.Geometry, ds);

                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            SharpMap.Data.FeatureDataRow red = res.Tables[0].NewRow();
                            red.Geometry = row.Geometry;
                            red.ItemArray = row.ItemArray;
                            res.Tables[0].AddRow(red);
                        }
                        ds.Tables.Clear();
                    }

                    LayerInfo l = new LayerInfo(res.Tables[0]);
                    l.Show();

                    SharpMap.Data.Providers.GeometryFeatureProvider prov = new SharpMap.Data.Providers.GeometryFeatureProvider(res.Tables[0]);

                    SharpMap.Layers.VectorLayer lay = new SharpMap.Layers.VectorLayer("selected layer", prov);
                    lay.Style.Fill = Brushes.Yellow;
                    SharpMap.Layers.ILayer layerToRemove = _map.GetLayerByName("selected layer");
                    if (layerToRemove != null)
                    {
                        _map.Layers.Remove(layerToRemove);
                    }
                    _map.Layers.Add(lay);
                    this._parent.RefreshMap();
                }
                else//van
                {
                    SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet();
                    SharpMap.Layers.VectorLayer layer1 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer1.SelectedItem.ToString());
                    SharpMap.Layers.VectorLayer layer2 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer2.SelectedItem.ToString());

                    SharpMap.Data.Providers.NtsProvider nts = new SharpMap.Data.Providers.NtsProvider(layer1.DataSource);
                    SharpMap.Data.Providers.NtsProvider nts2 = new SharpMap.Data.Providers.NtsProvider(layer2.DataSource, CreateBuffers);

                    SharpMap.Geometries.GeometryCollection coll = new SharpMap.Geometries.GeometryCollection();
                    ds.Tables.Clear();

                    SharpMap.Data.FeatureDataSet set = new SharpMap.Data.FeatureDataSet();
                    nts.GetFeaturesInView(nts.GetExtents(),set);

                    SharpMap.Data.FeatureDataSet res = new SharpMap.Data.FeatureDataSet();
                    res.Tables.Add(set.Tables[0].Clone());
                    res.Tables[0].Rows.Clear();

                    ds.Tables.Clear();
                    foreach (SharpMap.Data.FeatureDataRow row in set.Tables[0].Rows)
                    {
                        nts2.ExecuteIntersectionQuery(row.Geometry, ds);

                        if (ds.Tables[0].Rows.Count <= 0)
                        {
                            SharpMap.Data.FeatureDataRow red = res.Tables[0].NewRow();
                            red.Geometry = row.Geometry;
                            red.ItemArray = row.ItemArray;
                            res.Tables[0].AddRow(red);
                        }
                        ds.Tables.Clear();
                    }

                    LayerInfo l = new LayerInfo(res.Tables[0]);
                    l.Show();

                    SharpMap.Data.Providers.GeometryFeatureProvider prov = new SharpMap.Data.Providers.GeometryFeatureProvider(res.Tables[0]);

                    SharpMap.Layers.VectorLayer lay = new SharpMap.Layers.VectorLayer("selected layer", prov);
                    lay.Style.Fill = Brushes.Yellow;
                    SharpMap.Layers.ILayer layerToRemove = _map.GetLayerByName("selected layer");
                    if (layerToRemove != null)
                    {
                        _map.Layers.Remove(layerToRemove);
                    }
                    _map.Layers.Add(lay);
                    this._parent.RefreshMap();
                }
            }
        }