0

EPSG:4326 WGS 84 Shapefile があり、それを Sql Spatial Data に変換しました。sharpmap 1.1 を使用してマップをレンダリングできます (以前は Sharpmap 0.9 を使用していました)。

私が達成しようとしているのは、生成されたポリゴンをクリックすると、クリックされたポリゴンを色で塗りつぶす必要があることです(識別目的で)。クリックしたポイントを取得できますが、そのポイントとクエリを使用する方法そのポリゴン内のすべてのポイントに対して、すべてのポリゴンに色を付ける可能性のあるすべてのポイントに色を付けることができます。

問題は、sharpmap バージョン 1.1 でこれを行う方法がわからないことです。

以前、Sharpmap 0.9 を使用していたとき、以下の行を使用してすべてのポイントを取得し、ポリゴン全体に色を付けました。

pointArray.Collection.Add(SharpMap.Geometries.LinearRing.GeomFromWKB((byte[])Row["the_geom"]));

私のデータはSql Spatial DBからのものであるため、Row ["the_geom"]です。

これまでのところ、これを行いました(ポイントのみを強調表示し、ポイントをGeo APIコレクションに追加する必要があります)

  Collection<GeoAPI.Geometries.IGeometry> geomColl = new Collection<GeoAPI.Geometries.IGeometry>();
        GeoAPI.GeometryServiceProvider.Instance = new NetTopologySuite.NtsGeometryServices();
        GeoAPI.Geometries.IGeometryFactory gf = GeoAPI.GeometryServiceProvider.Instance.CreateGeometryFactory();


        SharpMap.Layers.VectorLayer mySuggestedLayer = new SharpMap.Layers.VectorLayer("Higlight");
        fillcolor = shapeFillColor;

        var factory = GeoAPI.GeometryServiceProvider.Instance.CreateGeometryFactory(_SRID);
        var pointArraySubject = factory.CreateGeometryCollection(null);
        var mySubjectLayer = new SharpMap.Layers.VectorLayer("SubjectIcon");

        DataRow Row = accounts.NewRow();
        for (int i = 0; i < accounts.Rows.Count; i++)
        {
            Row = accounts.Rows[i];
            GeoAPI.Geometries.Coordinate PinPnt = new GeoAPI.Geometries.Coordinate();


            double x = Double.Parse(Row["Xcoord_geo"].ToString()); 
            double y = Double.Parse(Row["Ycoord_geo"].ToString()); 

            PinPnt.X = x;
            PinPnt.Y = y;

           //pointArray.Collection.Add(SharpMap.Geometries.LinearRing.GeomFromWKB((byte[])Row["the_geom"]));
            geomColl.Add(gf.CreatePoint(PinPnt));

        mySuggestedLayer.DataSource = new SharpMap.Data.Providers.GeometryFeatureProvider(geomColl);
        mySuggestedLayer.Style.Fill = new System.Drawing.SolidBrush(fillcolor);       
        mySuggestedLayer.Style.EnableOutline = true;
        mySuggestedLayer.SRID = _SRID;

        _map.Layers.Add(mySuggestedLayer);

        return _map;

どんなアイデア/助けも私の一日を作ります.

4

1 に答える 1