Шейп-файл, который перепроектирован с использованием многоточия, отличается от исходного
У меня есть шейп-файл с EPSG:32749, который будет вставлен в базу данных Oracle и отображен в геосервере. Перед этим я хочу перепроектировать мой шейп-файл в ESPG:4326, используя библиотеку точек, вот мой код
var EXTRACTED_NAME = Server.MapPath("~/upload/shp/example/");
string shapeFilePath = @"\example.shp";
shapeFilePath = EXTRACTED_NAME + shapeFilePath;
Shapefile indexMapFile = Shapefile.OpenFile(shapeFilePath);
indexMapFile.Reproject(KnownCoordinateSystems.Geographic.World.WGS1984);
Но при предварительном просмотре в геосервере мой шейп-файл отображался так
И мой вопрос, почему шейп-файл, который воспроизводится в EPSG 4326, отличается от исходного?
Спасибо
0 ответов
Это немного поздно, но вы должны иметь доступ к внутренним кольцам из геометрии. Возможно, вам понадобится преобразовать IGeometry в IPolygon для конкретной работы с внутренними кольцами, а не просто как getGeometryN. Следующий код еще не был протестирован, но должен, по крайней мере, указать вам правильное направление.
Shapefile file = Shapefile.OpenFile(@"D:\Data\Counties\Counties.shp");
foreach(Feature f in file.Features){
if(f.Geometry is IPolygon){
IPolygon p = (IPolygon)f.Geometry;
Debug.WriteLine("Feature " + f.Fid + "\n");
foreach(ILineString innerRing in p.InteriorRings){
// Do stuff with your innerRing
Debug.WriteLine("Ring length : " + innerRing.Length);
}
}
if (f.Geometry is IMultiPolygon)
{
IMultiPolygon multi = (IMultiPolygon)f.Geometry;
for (int i = 0; i < multi.NumGeometries; i++)
{
IGeometry g = multi.GetGeometryN(i);
if (g is IPolygon)
{
IPolygon p = (IPolygon)g;
foreach (ILineString innerRing in p.InteriorRings)
{
// Do stuff with your innerRing
}
}
}
}
}