{"id":18023315,"url":"https://github.com/beginor/vector-tile-server","last_synced_at":"2025-10-11T13:12:35.686Z","repository":{"id":144769441,"uuid":"373770193","full_name":"beginor/vector-tile-server","owner":"beginor","description":"实时矢量切片服务器","archived":false,"fork":false,"pushed_at":"2022-02-16T08:21:09.000Z","size":1296,"stargazers_count":17,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-06T05:01:53.854Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beginor.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-04T08:15:22.000Z","updated_at":"2025-05-15T09:41:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"54851f24-19be-485b-9b56-6d315736cb1a","html_url":"https://github.com/beginor/vector-tile-server","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/beginor/vector-tile-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beginor%2Fvector-tile-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beginor%2Fvector-tile-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beginor%2Fvector-tile-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beginor%2Fvector-tile-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beginor","download_url":"https://codeload.github.com/beginor/vector-tile-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beginor%2Fvector-tile-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007311,"owners_count":26084280,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-30T07:09:04.554Z","updated_at":"2025-10-11T13:12:35.636Z","avatar_url":"https://github.com/beginor.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 实时矢量切片服务器\n\nVectorTile 是一个基于 [PostGIS](http://postgis.net/) 的 [ST_AsMVT](http://postgis.net/docs/ST_AsMVT.html) 函数开发的矢量切片服务器， HTTP 请求处理基于 .Net 6 WebAPI 实现。\n\n![Vector Tile Server](assets/VectorTileServer.png)\n\n## 数据库需求\n\n- `PostGIS` 最低版本为 3.1.x ；\n- `PostgreSQL` 虽然 PostGIS 最低支持 9.6.x 版本的 PostgreSQL ， 但是建议使用最新版 14.x 以获取最佳的性能；\n\n如果有 Docker 环境， 可以直接拉取我定制的 [PostGIS](https://hub.docker.com/r/beginor/postgis) 镜像：\n\n```sh\ndocker pull beginor/postgis:14-3.2.2022.0207\n```\n\n也可以拉取 PostGIS 的官方镜像：\n\n```sh\ndocker pull postgis/postgis:14-3.2\n```\n\n当然， 也可以自行安装 PostgreSQL + PostGIS 。\n\n## 空间数据要求\n\n空间数据格式没有要求， 只要能使用 GIS 软件 (QGIS, GDAL, ArcGIS 等) 导入到数据库中即可。\n\n空间数据的坐标系建议是 WGS84 Web Mercator (SRID 3857) ， 这个是 WebGIS 的标准， 也是矢量切片服务的默认坐标系， 输出时不需要进行坐标系转换， 效率最高。\n\n虽然 PostGIS 提供了 [ST_Transform](http://postgis.net/docs/ST_Transform.html) 函数可以进行坐标系转换， 但是却要消耗额外的性能 (v1.1.0 提供了缓存功能， 在缓存有效时间内， 只需要进行一次坐标系转换）。\n\n## 配置说明\n\n矢量切片服务配置保存在 `config` 目录下的 `appsettings.json` 文件中， 配置项说明如下：\n\n```jsonc\n{\n  \"logging\": { }, // 默认的日志输出， 不用修改\n  \"allowedHosts\": \"*\", // 允许的主机名， 不用修改\n  \"connectionStrings\": { // 数据库连接， 必须根据自己的需要进行修改\n    // 数据库链接示例\n    \"test_db\": \"server=127.0.0.1;port=5432;database=test_db;user id=postgres;password=YOUR_PASS\",\n    // 可以添加多个数据库连接\n    \"test_db2\": \"\"\n  },\n  \"cache\": { // 全局缓存设置\n    \"enabled\": true, // 启用缓存\n    \"directory\": \"./app_cache\", // 缓存目录\n    \"duration\": 86400 // 默认的缓存时间， 以秒为单位， 1 天 3600 * 24 = 86400 秒\n  },\n  \"vectors\": {\n    \"test1\": { // 配置一个矢量切片源\n      \"connectionString\": \"test_db\", // 上面配置数据库连接串， 也可以直接写数据库链接\n      \"cacheDuration\": 3600, // 该矢量切片源的缓存时间，如果未设置则使用全局默认的缓存时间\n      \"layers\": [\n        {\n          \"name\": \"road\", // 图层名称\n          \"minzoom\": 9, // 最小缩放级别\n          \"maxzoom\": 15, // 最大缩放级别\n          \"schema\": \"public\", // 数据表所在的架构 \n          \"tableName\": \"sr3857_road\", // 图层对应的数据表名称\n          \"idColumn\": \"id\", // 图层的ID字段， 每一行对应一个唯一的整数，\n          \"attributeColumns\": \"name, fclass, ref, oneway, maxspeed, bridge, tunnel, layer\", // 要输出的属性字段， 不要填 * ， 请合理选择要输出的字段。\n          \"geometryColumn\": \"geom\", // 空间坐标字段\n          \"srid\": 3857 // 图层保存的坐标系， 如果 srid 不是 3857 ， 将会调用 ST_Transform 实时转换\n        },\n        {\n          \"name\": \"building\", // 另一个图层， 和上面的类似\n          \"minzoom\": 13,\n          \"maxzoom\": 17,\n          \"schema\": \"public\",\n          \"tableName\": \"sr3857_building\",\n          \"idColumn\": \"objectid\",\n          \"attributeColumns\": \"name, height, flag, type, area_id\",\n          \"geometryColumn\": \"geom\",\n          \"srid\": 3857\n        }\n      ]\n    },\n    \"test2\": { /* 可以配置多个矢量切片源 */}\n  }\n}\n```\n\n## 运行\n\nWindows 系统直接运行 run.bat ， Linux 系统直接运行 run.sh ， 默认测试页面地址是：\n\n- \u003chttp://localhost:5000/vector/mapbox.html\u003e\n- \u003chttp://localhost:5000/vector/arcgis.html\u003e\n\n\u003e 如果需要修改占用的端口和上下文， 请修改 run.bat 或者 run.sh 文件内的 `ASPNETCORE_PATHBASE` 以及 `ASPNETCORE_URLS` 。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeginor%2Fvector-tile-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeginor%2Fvector-tile-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeginor%2Fvector-tile-server/lists"}