Order geo-columns to export 'the_geom' by default while exporting SHP format
This commit is contained in:
parent
2211e7c0ed
commit
833b7b962c
@ -72,10 +72,19 @@ OgrFormat.prototype.toOGR = function(options, out_format, out_filename, callback
|
|||||||
var columns = [];
|
var columns = [];
|
||||||
var geocol;
|
var geocol;
|
||||||
var pg;
|
var pg;
|
||||||
|
|
||||||
// Drop ending semicolon (ogr doens't like it)
|
// Drop ending semicolon (ogr doens't like it)
|
||||||
sql = sql.replace(/;\s*$/, '');
|
sql = sql.replace(/;\s*$/, '');
|
||||||
|
|
||||||
|
const theGeomFirst = (fieldA, fieldB) => {
|
||||||
|
if (fieldA.name === 'the_geom') {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (fieldB.name === 'the_geom') {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
|
||||||
step (
|
step (
|
||||||
|
|
||||||
function fetchColumns() {
|
function fetchColumns() {
|
||||||
@ -83,37 +92,26 @@ OgrFormat.prototype.toOGR = function(options, out_format, out_filename, callback
|
|||||||
pg = new PSQL(dbopts);
|
pg = new PSQL(dbopts);
|
||||||
pg.query(colsql, this);
|
pg.query(colsql, this);
|
||||||
},
|
},
|
||||||
// jshint maxcomplexity:9
|
|
||||||
function findSRS(err, result) {
|
function findSRS(err, result) {
|
||||||
assert.ifError(err);
|
assert.ifError(err);
|
||||||
|
|
||||||
//if ( ! result.rows.length ) throw new Error("Query returns no rows");
|
|
||||||
|
|
||||||
var needSRS = that._needSRS;
|
var needSRS = that._needSRS;
|
||||||
|
|
||||||
// Skip system columns, find geom column
|
columns = result.fields
|
||||||
for (var i=0; i<result.fields.length; ++i) {
|
// skip columns
|
||||||
var field = result.fields[i];
|
.filter(field => skipfields.indexOf(field.name) === -1)
|
||||||
var k = field.name;
|
// put "the_geom" first (if exists)
|
||||||
if ( skipfields.indexOf(k) !== -1 ) {
|
.sort(theGeomFirst)
|
||||||
continue;
|
// get first geometry to calculate SRID ("the_geom" if exists)
|
||||||
}
|
.map(field => {
|
||||||
if ( out_format !== 'CSV' && k === "the_geom_webmercator" ) {
|
if (needSRS && !geocol && pg.typeName(field.dataTypeID) === 'geometry') {
|
||||||
continue;
|
geocol = field.name;
|
||||||
} // TODO: drop ?
|
|
||||||
if ( out_format === 'CSV' ) {
|
|
||||||
columns.push(pg.quoteIdentifier(k)+'::text');
|
|
||||||
} else {
|
|
||||||
columns.push(pg.quoteIdentifier(k));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( needSRS ) {
|
|
||||||
if ( ! geocol && pg.typeName(field.dataTypeID) === 'geometry' ) {
|
|
||||||
geocol = k;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
return field;
|
||||||
//console.log(columns.join(','));
|
})
|
||||||
|
// apply quotes to columns
|
||||||
|
.map(field => out_format === 'CSV' ? pg.quoteIdentifier(field.name)+'::text' : pg.quoteIdentifier(field.name));
|
||||||
|
|
||||||
if ( ! needSRS || ! geocol ) {
|
if ( ! needSRS || ! geocol ) {
|
||||||
return null;
|
return null;
|
||||||
@ -137,7 +135,6 @@ OgrFormat.prototype.toOGR = function(options, out_format, out_filename, callback
|
|||||||
next(null);
|
next(null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
function spawnDumper(err, srid, type) {
|
function spawnDumper(err, srid, type) {
|
||||||
assert.ifError(err);
|
assert.ifError(err);
|
||||||
|
Loading…
Reference in New Issue
Block a user