Как получить внутреннее кольцо (отверстие) из шейп-файла в ASP.NET, используя точки? - PullRequest
0 голосов
/ 02 января 2019

Я ищу скрипт, чтобы получить внутреннее кольцо из многоугольника в шейп-файле, используя точки. Ниже приведен мой скрипт для получения всех координат (игнорируя внешнее / внутреннее кольцо) из шейп-файла.

string shapeFilePath = @"\example.shp";
shapeFilePath = location + shapeFilePath;
Shapefile indexMapFile = Shapefile.OpenFile(shapeFilePath);
indexMapFile.Reproject(KnownCoordinateSystems.Geographic.Australia.GeocentricDatumofAustralia1994);

for (int i = 0; i < indexMapFile.DataTable.Rows.Count; i++)
{

    IFeature feature = indexMapFile.Features.ElementAt(i);

    var arr = feature.Coordinates.ToArray();

    foreach (var det in arr)
    {
        DotSpatial.Topology.Coordinate det_cor = det;
        string X = det_cor.X.ToString();
        string Y = det_cor.Y.ToString();
    }
}

1 Ответ

0 голосов
/ 02 января 2019

я нашел ответ, это мой код, как получить внутреннее кольцо из полигона

string shapeFilePath = @"\example.shp";
shapeFilePath = location + shapeFilePath;
Shapefile indexMapFile = Shapefile.OpenFile(shapeFilePath);
indexMapFile.Reproject(KnownCoordinateSystems.Geographic.Australia.GeocentricDatumofAustralia1994);

for (int i = 0; i < indexMapFile.DataTable.Rows.Count; i++)
{

    IFeature feature = indexMapFile.Features.ElementAt(i);
    IPolygon bp = feature.GetBasicGeometryN(0) as IPolygon;
    var all_polygon = bp.GetGeometryN(0);//include outer and inner ring, see this link -> /5806474/wkt-kak-vy-opredelyaete-poligony-s-3-koltsami-2-otverstiya
    var outer_ring = bp.Shell.GetGeometryN(0);
    int idx_hole = 0;
    foreach (var hole in bp.Holes)
    {
        //get inner ring/hole from polygon
        Response.Write(bp.GetInteriorRingN(idx_hole));
        idx_hole++;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...