Поэтому я использую pg-обещание для вставки нескольких геополитических мультиполигонов в базу данных postgis. Вставка в базу данных работает нормально, но для некоторых строк в базе данных я получаю странное поведение, то есть ячейка заполнена двумя строками. Первая строка - это сообщение о загрузке, а вторая - фактический объект geom, который более странным образом преобразуется из geojson в postgis geom.
function createBorder(pathToJSON, table) {
fs.readFile(pathToJSON,
{encoding: 'UTF-8'},
(err, data) => {
let geoJSON = JSON.parse(data);
geoJSON.features.forEach(f => {
f.geometry.crs = {
type: 'name',
properties: {
name: 'EPSG:4326'
}
}
db.none('INSERT INTO nyc_borders(geom)\
VALUES (ST_GeomFromGeoJSON(${geoJSON}))', {
geoJSON: f.geometry
})
.then((d) => {
console.log(f.geometry);
})
.catch(error => {
console.log("ERROR: ", error);
})
});
});
}
createBorder('./data/community_districts.geojson');
Я сокращаю вывод geoJSON, в основном это границы районов сообщества из nyc, загруженного с портала opendata
GeoJSON:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"shape_leng": "51549.5578986",
"boro_cd": "311",
"shape_area": "103177785.347"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-73.97348373564797,
40.61137106069874
],
[
-73.97303089190211,
40.6090051063008
],
[
-73.97299433938896,
40.60881414180224
]
]
]
]
}
},
{
"type": "Feature",
"properties": {
"shape_leng": "65821.875617",
"boro_cd": "313",
"shape_area": "88195686.2688"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-73.96720294103956,
40.573326317397424
],
[
-73.96738975478877,
40.573258999904446
],
[
-73.9674356779313,
40.57320896967127
],
[
-73.96736390080571,
40.57304456895217
],
[
-73.98372152615246,
40.59582107821707
]
]
]
]
}
}
]
}
Некоторые фотографии из моей базы данных:
таблица базы данных со строками, имеющими две строки в одной ячейке
одна ячейка расширена, чтобы лучше видеть фактические линии буксировки
Так что я действительно застрял, потому что у меня нет идеи, как начать отладку, пока вставка действительно работает, как, а также преобразование объекта geojson выглядит хорошо. Я на самом деле не могу понять, кто вызывает это неправильное поведение.