Red de conocimiento informático - Material del sitio web - Cómo utilizar nettopologysuite

Cómo utilizar nettopologysuite

El siguiente es un ejemplo sencillo que demuestra cómo realizar un análisis de búfer en un archivo Shape:

public void InitializeMap(SharpMap.Map map)

{

/ / Cree una fuente de datos para el archivo Shape

Método SharpMap.Data.NtsOperation

SharpMap.Data.Providers.NtsProvider nts = nuevo método SharpMap.Data.Providers.Nettopologysuite NtsOperation

SharpMap.Data.Providers.NtsProvider nts = nuevo SharpMap.Data.Providers.NtsProvider(shp,nuevo SharpMap.Data.Providers.NtsProvider.Geometry,nuevo SharpMap.Data.Providers.NtsProvider.Map).VectorLayer( "Rivers" );

layRivers.DataSource = nts;

layRivers.Style.Fill = Brushes.Blue;

map.Layers.Add(layRivers) ;

}Característica f en geoms)

f.Geometry = f.Geometry.Buffer(0.5);

}

En el ejemplo anterior, podemos ver que podemos usar el método de análisis espacial NTS en SharpMap utilizando el proveedor de datos NTS a través del delegado .net.

Morten Nielsen, el autor de SharpMap, también dio ejemplos en su blog sobre cómo usar NTS en SharpMap:

1. Realizar análisis espacial en objetos geométricos. En este artículo El ejemplo. es análisis de búfer;

Primero, cree una fuente de datos NTS para representar los datos que se analizarán espacialmente, donde myShapeFileDatasource representa la fuente de datos del archivo Shape (que participa en el ejemplo anterior):

NtsProvider ntsDataSource = new NtsProvider(myShapeFileDatasource, CreateBuffers)

CreateBuffers:

CreateBuffers vacío privado(List

{

<); p >foreach (característica GisSharpBlog.NetTopologySuite.Features.Feature en características)

característica.Geometry = feature.Geometry.Buffer(0.5);

}

1.}< / p>

2. Utilice NTS para una determinación precisa de la intersección; este ejemplo selecciona objetos haciendo clic en ellos, resaltándolos y devolviendo las propiedades correspondientes.

Puede hacer que el objeto "ntsDataSource" apunte a. la imagen vectorial, haga clic en el objeto y resalte el objeto seleccionado.

Esto puede activarse mediante un evento de clic en un ImageButton (ASP.NET) o PictureBox (Windows.Forms):

protected void imgMap_Click(object sender, ImageClickEventArg) ImageClickEventArgs e)

{

//Convierte coordenadas gráficas en coordenadas de mapa

Point ClickPnt = myMap.ImageToWorld(new System.ImageToWorld(new System.ImageToWorld(new System.ImageToWorld(new System.ImageToWorld ( nuevo System.ImageToWorld(nuevo System.ImageToWorld))))ImageToWorld(nuevo System.Drawing.Point(e.X, e.Y));

SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet( ) ;

// Consulta en la primera capa, preste atención al uso del método ExecuteIntersectionQuery de NTS

( myMap.Layers[0 as SharpMap.Data.FeatureDataSet());

// Consulta en la segunda capa, preste atención al uso del método ExecuteIntersectionQuery de NTS

( myMap.Layers[0 as SharpMap.Data.FeatureDataSet());

// Consulta en la tercera capa. Layers.VectorLayer laySelected = new SharpMap.Layers.VectorLayer("Selection");

laySelected.DataSource = new GeometryProvider(ds.Tables[0]);

laySelected.Style.Fill = new System.Drawing.VectorLayer("Selección");