npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

geotile_sdk

v0.2.4

Published

A tile sdk for Cloud Optimised Geotiff and shapefile

Downloads

59

Readme

一、瓦片服务

支持tif、geojson、shapefile、postgis数据源,支持生成png、mvt格式的瓦片 先创建地图样式配置文件xml,通过制定xml文件的id进行地图渲染,并返回指定瓦片

创建地图样式: 支持多图层、多样式配置文件的生成 获取瓦片: 支持多图层一起渲染,返回一个瓦片, 支持png、mvt两种瓦片格式, 支持本地磁盘瓦片缓存

API

创建地图样式POST接口: http://localhost:5000/style

获取瓦片GET: http://localhost:5000/tiles/{id}/{x}/{y}/{z}.{format}

示例:

http://localhost:5000/tiles/styletemplate_postgis/107879/51369/17.png
http://localhost:5000/tiles/styletemplate_postgis/107879/51369/17.mvt
http://localhost:5000/tiles/styletemplate_postgis/107879/51369/17.mvt?Cache=/luojun
http://localhost:5000/tiles/styletemplate_postgis/107879/51369/17.png?Cache=/luojun

详细接口说明: http://10.53.5.163:9000/project/124/interface/api/3258

服务启动

node test/index.js

二、geotile-sdk

A tile sdk for Cloud Optimised Geotiff and shapefile "

  • 瓦片请求事件循环(繁忙时)

    即时相应瓦片请求并返回结果

  • 后台预加载任务循环(空闲时): 通过setTimeout实现非阻塞循环,不会影响事件循环处理瓦片请求 繁忙时关闭(有瓦片请求时),空闲时唤醒。 唤醒方式:设置请求完成时的回调函数, 判断是否有正在处理的请求,若无,则唤醒闲时任务循环

    a、检测是否是闲时,如是忙碌状态,则结束循环,如是空闲状态,执行b

    b、空闲状态下, 执行一次闲时任务

    c、闲时任务执行结束,重新执行a

代码结构

| 代码文件 | 功能 | | ---- | ---- | |index.js | 外部接口:获取瓦片 | |orderList.js | 将当前瓦片请求以及横向相关区域加入orderList(快队列), 立即处理orderList中的瓦片请求, 调用map.js获取瓦片 | |regionCache.js | 将当前瓦片请求的纵向相关区域加入slowList(慢队列), 空闲时(无瓦片请求时)加入orderList, 获取瓦片 | |map.js | 地图渲染和瓦片提取, png编码 | |SRS.js | SRS空间参考系的转换 |

|-- src
|   |-- index.js
|   |-- orderList.js
|   |-- regionCache.js
|   |-- map.js
|   |-- SRS.js
|-- test
    |-- index.js
    |-- utils.js
    |-- data
    |   |-- clip2.rs
    |   |-- clip2.tif
    |-- routes
        |-- index.js
        |-- style.js
        |-- tile.js
|-- style
|   |-- styletemplate_json.xml
|   |-- styletemplate_shp.xml
|   |-- test.xml
|   |-- test2.xml
|   |-- test3.xml
|   |-- test4.xml
|   |-- test5.xml

主要功能:

  • generateXML: 生成地图xml配置文件(包括地图样式和图层),返回xml文件的uuid
  • setMapnikDir: 设置路径,包括xml的存放路径和mapnikDir的路径
  • fetchTile: 根据xml文件和xyz提取指定瓦片
  • fetchTilefetchTileOptimized: 优化后的瓦片提取接口

Example

var geotile_sdk = require("geotile_sdk");

//设置样式文件路径和mapnik的input plugin
var styleDir=".../style"
var mapnikDir=".../node_modules/mapnik/lib/binding/"
geotile_sdk.setMapnikDir(styleDir,mapnikDir)

//根据json生成栅格的地图样式xml文件
var styleJson_raster = {
  "style":{
    "Type": "Raster"
  },
  "layer":{
    "path":"/luojun/github/geotiff-server/test/data/clip2.rs",
    "SRS":"3857"
  }
}
const style_str_raster= JSON.stringify(styleJson_raster)
geotile_sdk.generateXML(style_str, (err,uuid)=>{ if(!!err)var xmlUUID=uuid })

//根据json生成面要素的地图样式xml文件
var styleJson_polygon = {
  "style":{
    "Type": "Polygon",
    "Color": "black",
    "LineWidth": 1,
    "FillColor": "#bee826"
  },
  "layer":{
    "path":"/luojun/github/geotiff-server/test/data/clip2.rs",
    "SRS":"3857"
  }
}
const style_str_polygon= JSON.stringify(styleJson_polygon)
geotile_sdk.generateXML(style_str_polygon, (err,uuid)=>{ if(!!err)var xml_uuid_polygon=uuid })

//根据json生成线要素的地图样式xml文件
var styleJson_line={
  "style":{
    "Type":"Line",
    "Color":"#bee826", 
    "LineWidth":1
  },
  "layer":{
    "path":"/luojun/github/geotiff-server/test/data/clip2.rs",
    "SRS":"3857"
  }
}
const style_str_line= JSON.stringify(styleJson_line)
geotile_sdk.generateXML(style_str_line, (err,uuid)=>{ if(!!err)var xml_uuid_line=uuid })

//根据json生成点要素的地图样式xml文件
var styleJson_point={
  "style":{
    "Type":"Point", 
  },
  "layer":{
    "path":"/luojun/github/geotiff-server/test/data/clip2.rs",
    "SRS":"3857"
  }
}
const style_str_point= JSON.stringify(styleJson_point)
geotile_sdk.generateXML(style_str_point, (err,uuid)=>{ if(!!err)var xml_uuid_point=uuid })
  
//获取瓦片: 传入参数(瓦片的xyz,数据源路径,数据的空间参考系,结果处理回调函数,地图样式文件的uuid)
geotile_sdk.fetchTile(109195, 51561, 17, xml_uuid_raster, (err,tile_png) => {});
geotile_sdk.fetchTile(109195, 51561, 17, xml_uuid_polygon, (err,tile_png) => {});
geotile_sdk.fetchTile(109195, 51561, 17, xml_uuid_line, (err,tile_png) => {});

//优化后的获取瓦片接口 (基于事件驱动的瓦片缓存)
//获取瓦片: 传入参数(瓦片的xyz,数据源路径,数据的空间参考系,结果处理回调函数,地图样式文件的uuid)
geotile_sdk.fetchTilefetchTileOptimized(109195, 51561, 17, xml_uuid_raster, (err,tile_png) => {});
geotile_sdk.fetchTilefetchTileOptimized(109195, 51561, 17, xml_uuid_polygon, (err,tile_png) => {});
geotile_sdk.fetchTilefetchTileOptimized(109195, 51561, 17, xml_uuid_line, (err,tile_png) => {});

}