Вычисление площади в GDAL с привязкой к эллипсоиду
Добавлено: 19 окт 2017, 15:34
Добрый день!
Помогите разобраться в проблеме.
Необходимо вычислить площадь векторного полигона.
Соответственно, результат тестирую в QGIS в калькуляторе полей используя функции
$AREA и Area( ), как я понял $AREA вычисляет площадь в ед. изм. проекта и на эллипсоиде который задан в тех же настройках.
Area(геометрия) - вычисляет площадь без учета эллипса
SRS моего полигона:
И код которым считаю площадь GDAL (на NodeJS)
Настройки проекта QGIS:
Эллипсоид для вычислений: WGS84
Большая полуось: 6 378 137,000
Малая полуось: 6 356 752,314
Система координат проекта: WGS84 / ESPG:4326
Полигон так же создан в СК: WGS84 / ESPG:4326
Объясните мне в каких ед. измерения возвращается мне площадь полигона функцией getArea().
Как посчитать площадь полигона на нужном мне эллипсоиде, что бы получить тоже значение что и в QGIS c использованием $AREA
Буду очень благодарен!
Помогите разобраться в проблеме.
Необходимо вычислить площадь векторного полигона.
Соответственно, результат тестирую в QGIS в калькуляторе полей используя функции
$AREA и Area( ), как я понял $AREA вычисляет площадь в ед. изм. проекта и на эллипсоиде который задан в тех же настройках.
Area(геометрия) - вычисляет площадь без учета эллипса
Calculations are always planimetric in the Spatial Reference System (SRS) of this geometry, and the units of the returned area will match the units for the SRS.
// Расчеты всегда являются контурными в пространственной системе отсчета (SRS) этой геометрии, а единицы возвращенной области будут соответствовать единицам для SRS.
SRS моего полигона:
Код: Выделить всё
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]
Код: Выделить всё
dataset = gdal.open(FILE_NAME);
console.log(" Количество слоёв: " + dataset.layers.count());
dataset.layers.forEach(function(layer) {
var feature = new gdal.Feature(layer);
while (feature = layer.features.next()) {
var test_geometry = feature.getGeometry();
console.log(" Геометрия: " + test_geometry);
console.log(" ** Площадь: " + test_geometry.getArea());
console.log("\n WKT: \n" + test_geometry.srs.toPrettyWKT());
}
});
dataset.close();
console.log("\nФайл \"" + FILE_NAME + "\" закрыт\n");
Эллипсоид для вычислений: WGS84
Большая полуось: 6 378 137,000
Малая полуось: 6 356 752,314
Система координат проекта: WGS84 / ESPG:4326
Полигон так же создан в СК: WGS84 / ESPG:4326
Объясните мне в каких ед. измерения возвращается мне площадь полигона функцией getArea().
Как посчитать площадь полигона на нужном мне эллипсоиде, что бы получить тоже значение что и в QGIS c использованием $AREA
Буду очень благодарен!