New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

dropin-tileservice

Package Overview
Dependencies
Maintainers
0
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dropin-tileservice

A minimal drop in vector tile service using pg

latest
npmnpm
Version
1.0.0
Version published
Maintainers
0
Created
Source

Drop In Tileservice

A drop in vector tile service using pg for turning any postres backend into a tileserver.

Pre Requisites:

  • PostgreSQL with the PostGIS extension added.
  • This Package requires the node-postgres package

Installation

  • Clone this repo then build using npm run build at the root
  • Install in your application with npm install path/to/repo
  • Link with npm link path/to/repo

Usage: (Express example)

import { Tileserver } from "dropin-tileservice"
import { Pool } from "pg"
import Express from "express"

const app = Express()
const port = 5000

app.use(cors())

const connection_params = {
    user: "postgres",
    host: "localhost",
    database: "features",
    password: "secret-password", //optional
    port: 5432
}

const pool = new Pool(connection_params)

const tileService = new Tileserver()
//SQL to be run against the pool db
tileservice.setQuery("SELECT id, geom FROM schema.table WHERE prop = 44") 
tileservice.setSrid(2252) //Michigan Central

app.get("/tiles/:z/:x/:y", async (req, res) => {
    try {
        const conn = await pool.connect()
        const tiles = await ts.query(req.params.z, req.params.x, req.params.y, conn, {
            layername: "default"
        })
        res.status(200).send(tiles) //protobuf sent as result 
    } catch (e) {
        console.log(e)
    } finally {
        await conn.release()
    }

})

With Params

tileservice.setQuery("SELECT id, geom FROM schema.table WHERE prop = $1") 
tileservice.setSrid(2252) //Michigan Central

app.get("/tiles/:z/:x/:y", async (req, res) => {
    try {
        const conn = await pool.connect()
        const tiles = await ts.query(req.params.z, req.params.x, req.params.y, conn, {
            params: [44],
            layername: "default"
        })
        res.status(200).send(tiles) //protobuf sent as result 
    } catch (e) {
        console.log(e)
    } finally {
        await conn.release()
    }
})

Passing queryString and srid

app.get("/tiles/:z/:x/:y", async (req, res) => {
    try {
        const conn = await pool.connect()
        const tiles = await ts.query(req.params.z, req.params.x, req.params.y, conn, {
            queryString: "SELECT id, geom FROM schema.table WHERE prop = $1",
            srid: 2252,
            params: [44],
            layername: "default"
        })
        res.status(200).send(tiles) //protobuf sent as result 
    } catch (e) {
        console.log(e)
    } finally {
        await conn.release()
    }
})

FAQs

Package last updated on 02 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts