postgis 1.0.4
Install from the command line:
Learn more about npm packages
$ npm install @jsuyog2/postgis@1.0.4
Install via package.json:
"@jsuyog2/postgis": "1.0.4"
About this version
This Node.js class provides methods for interacting with a PostgreSQL/PostGIS database. It abstracts common spatial operations and queries, allowing you to easily perform spatial operations on your PostGIS-enabled PostgreSQL database.
-
Install the required packages using npm:
npm install pg
To use the Postgis
class, first initialize it with a PostgreSQL client instance from the pg
package:
const { Client } = require('pg');
const Postgis = require('Postgis');
const client = new Client({
connectionString: 'your_connection_string'
});
client.connect();
const postgis = new Postgis(client);
// Example usage
async function run() {
try {
const tables = await postgis.list_tables({ filter: 'table_type = \'BASE TABLE\'' });
console.log('Tables:', tables);
const columns = await postgis.list_columns('your_table');
console.log('Columns:', columns);
const features = await postgis.query_table('your_table', {
columns: 'name, geom',
filter: `"column_name" = 'value'`,
sort: 'name ASC',
limit: 50
});
console.log('Features:', features);
} catch (err) {
console.error('Error:', err);
} finally {
await client.end();
}
}
run();
Lists all tables in the database. Optionally, you can filter by schema or other parameters.
Parameters:
-
options
(optional): JSON object with the following properties:-
filter
(optional): A SQL WHERE clause filter.
-
Returns: A list of tables with their metadata.
Example:
const tables = await postgis.list_tables({ filter: 'table_type = \'BASE TABLE\'' });
Lists all columns in a given table.
Parameters:
-
table
: The name of the table.
Returns: A list of columns in the table.
Example:
const columns = await postgis.list_columns('your_table');
Queries a table with optional parameters for columns, filtering, grouping, sorting, and limiting the results.
Parameters:
-
table
: The name of the table. -
options
(optional): JSON object with the following properties:-
columns
(optional): Columns to retrieve, defaults to'*'
. -
filter
(optional): A SQL WHERE clause filter. -
group
(optional): Columns to group by. -
sort
(optional): Sorting order. -
limit
(optional): Limit the number of results, defaults to100
.
-
Returns: A list of rows from the query.
Example:
const features = await postgis.query_table('your_table', {
columns: 'name, geom',
filter: `"column_name" = 'value'`,
sort: 'name ASC',
limit: 50
});
Calculates the bounding box (extent) for a given table based on a specified geometry column.
Parameters:
-
table
: The name of the table. -
options
(optional): JSON object with the following properties:-
geom_column
(optional): The geometry column, defaults to'geom'
. -
srid
(optional): The SRID for the bounding box, defaults to4326
. -
filter
(optional): A SQL WHERE clause filter.
-
Returns: An object representing the bounding box with coordinates.
Example:
const bbox = await postgis.bbox('your_table', {
geom_column: 'geom',
srid: 4326,
filter: `"some_column" = 'some_value'`
});
Calculates the centroid of geometries in a given table.
Parameters:
-
table
: The name of the table. -
options
(optional): JSON object with the following properties:-
force_on_surface
(optional): Whether to force the centroid to be on the surface, defaults tofalse
. -
geom_column
(optional): The geometry column, defaults to'geom'
. -
srid
(optional): The SRID, defaults to'4326'
. -
filter
(optional): A SQL WHERE clause filter.
-
Returns: A list of centroids.
Example:
const centroids = await postgis.centroid('your_table', {
force_on_surface: true,
geom_column: 'geom',
srid: 4326,
filter: `"column_name" = 'value'`
});
Finds intersections between features in two tables.
Parameters:
-
table_from
: The first table. -
table_to
: The second table. -
options
(optional): JSON object with the following properties:-
columns
(optional): Columns to retrieve, defaults to'*'
. -
distance
(optional): Distance for the intersection, defaults to'0'
. -
geom_column_from
(optional): The geometry column for the first table, defaults to'geom'
. -
geom_column_to
(optional): The geometry column for the second table, defaults to'geom'
. -
filter
(optional): A SQL WHERE clause filter. -
sort
(optional): Sorting order. -
limit
(optional): Limit the number of results.
-
Returns: A list of intersecting features.
Example:
const intersections = await postgis.intersect_feature('table1', 'table2', {
columns: 'name, geom',
distance: '10',
filter: `"some_column" = 'some_value'`,
sort: 'name ASC',
limit: 50
});
Finds features in a table that intersect with a given point.
Parameters:
-
table
: The name of the table. -
point
: The point to intersect with. -
options
(optional): JSON object with the following properties:-
columns
(optional): Columns to retrieve, defaults to'*'
. -
distance
(optional): Distance for the intersection, defaults to'0'
. -
geom_column
(optional): The geometry column, defaults to'geom'
. -
filter
(optional): A SQL WHERE clause filter. -
sort
(optional): Sorting order. -
limit
(optional): Limit the number of results.
-
Returns: A list of features intersecting with the point.
Example:
const features = await postgis.intersect_point('your_table', '1,1,4326', {
columns: 'name, geom',
distance: '5',
filter: `"some_column" = 'some_value'`,
sort: 'name ASC',
limit: 10
});
Converts features from a table to GeoJSON format.
Parameters:
-
table
: The name of the table. -
options
(optional): JSON object with the following properties:-
bounds
(optional): Bounding box for the results. -
id_column
(optional): Column to use as the feature ID. -
precision
(optional): Precision for coordinates, defaults to9
. -
geom_column
(optional): The geometry column, defaults to'geom'
. -
columns
(optional): Columns to retrieve. -
filter
(optional): A SQL WHERE clause filter.
-
Returns:
A GeoJSON FeatureCollection
.
Example:
const geojson = await postgis.geojson('your_table', {
bounds: 'xmin ymin, xmax ymax',
id_column: 'id',
precision: 6,
geom_column: 'geom',
columns: 'name, geom',
filter: `"some_column" = 'some_value'`
});
Converts features from a table to Geobuf format.
Parameters:
-
table
: The name of the table. -
options
(optional): JSON object with the following properties:-
bounds
(optional): Bounding box for the results. -
geom_column
(optional): The geometry column, defaults to `'
-
geom'`.
-
columns
(optional): Columns to retrieve. -
filter
(optional): A SQL WHERE clause filter.
Returns: A Geobuf binary encoded string.
Example:
const geobuf = await postgis.geobuf('your_table', {
bounds: 'xmin ymin, xmax ymax',
geom_column: 'geom',
columns: 'name, geom',
filter: `"some_column" = 'some_value'`
});
Generates a Mapbox Vector Tile (MVT) for a given tile coordinate.
Parameters:
-
table
: The name of the table. -
x
: The x-coordinate of the tile. -
y
: The y-coordinate of the tile. -
z
: The zoom level. -
options
(optional): JSON object with the following properties:-
columns
(optional): Columns to retrieve. -
id_column
(optional): Column to use as the feature ID. -
geom_column
(optional): The geometry column, defaults to'geom'
. -
filter
(optional): A SQL WHERE clause filter.
-
Returns: A Mapbox Vector Tile.
Example:
const mvt = await postgis.mvt('your_table', 1, 2, 3, {
columns: 'name, geom',
id_column: 'id',
filter: `"some_column" = 'some_value'`
});
Finds the nearest features to a given point.
Parameters:
-
table
: The name of the table. -
point
: The point to find the nearest features to. -
options
(optional): JSON object with the following properties:-
columns
(optional): Columns to retrieve, defaults to'*'
. -
geom_column
(optional): The geometry column, defaults to'geom'
. -
filter
(optional): A SQL WHERE clause filter. -
limit
(optional): Limit the number of results, defaults to10
.
-
Returns: A list of the nearest features.
Example:
const nearest = await postgis.nearest('your_table', '1,1,4326', {
columns: 'name, geom',
filter: `"some_column" = 'some_value'`,
limit: 5
});
Transforms a point from one SRID to another.
Parameters:
-
point
: The point to transform. -
options
(optional): JSON object with the following properties:-
srid
(optional): The target SRID, defaults to4326
.
-
Returns: The transformed point.
Example:
const transformed = await postgis.transform_point('1,1,4326', { srid: 3857 });
All methods throw an error if the query execution fails. Ensure proper error handling in your application to manage these errors.
try {
const result = await postgis.someMethod();
console.log(result);
} catch (err) {
console.error('Error:', err);
}
This project is licensed under the MIT License. See the LICENSE file for details.