vjmap-service — 唯杰地图服务(共用后端 REST)
Use when calling the shared VJMAP backend REST service (唯杰地图服务) that all client SDKs (vjmap/vjmapext/vjmap3d/vjcad/vjvp) depend on — map upload/open/close/delete/rename/metadata/thumbnail, raster & vector tiles and WMS, style create/switch/update/slice-cache, feature query & coord transform, analysis (mapDiff/mapCompare/extractTable/centerline/objectMatch/svg→dwg), compose/split/export PDF/DXF/offline tiles, WebCAD drawings CRUD & patches & DWG export, workspaces, KV data storage, full-text search, symbol library, system (heart/version/runstatus/logs), service misc (qrcode/fonts/uploadImg), AI (vectorSearch/chatFaq/vectorDocs). Includes single-file Node/Python SDKs, OpenAPI spec, and a live smoke test. Keywords vjmap 服务 REST API 后端 openmap tile wms queryFeatures webcad 瓦片 服务地址 token. Excludes client-side SDK usage (use the product skills).
kind: shared backend REST service
mcp: https://vjmap.com/server/mcp?token=xxxxxx
sdk: 本目录 sdk/nodejs/vjmap.js(零依赖,Node≥18)· sdk/python/vjmap.py(requests)
openapi: openapi/vjmap.openapi.yaml
服务地址与 token 换为你自己的(公有云 https://vjmap.com/server/api/v1,私有化 http://<ip>:27660/api/v1)。不要把 token 写进提交的代码。
快速验证
curl -s http://127.0.0.1:27660/heart # => {"status":"ok",...}
curl -s http://127.0.0.1:27660/version # => {"version":"...",...}
// Node ≥18,零依赖
const { Vjmap } = require("./sdk/nodejs/vjmap.js");
const svc = new Vjmap("http://127.0.0.1:27660/api/v1", "<jwt-token>");
console.log(await svc.heart(), await svc.version());
# Python ≥3.8 + requests
from vjmap import Vjmap
svc = Vjmap("http://127.0.0.1:27660/api/v1", "<jwt-token>")
print(svc.heart(), svc.version())
冒烟测试
VJMAP_SERVICE_URL=http://127.0.0.1:27660/api/v1 VJMAP_TOKEN=<jwt> \
node vjmap-service/scripts/verify/smoke.mjs
# 可选 VJMAP_TEST_MAPID=<已有图名> 跑 metadata/bounds/thumbnail 读取链
# 无环境变量时只跑离线断言(SDK 方法存在性 + URL 组装)
按任务找文档(73 个接口 / 13 类)
| 我要做 | 去读 | SDK 方法名(Node camelCase;Python 对应 snake_case) |
|---|---|---|
| 上传 DWG / 打开 / 关闭 / 删除 / 重命名 / 元数据 / 缩略图 / 支持格式 / 数据范围 | api/01-map-management | uploadMap checkMapFile openMap waitMapOpenFinish closeMap metadata thumbnailUrl supportFormat getDataBounds |
| 栅格瓦片 XYZ / 矢量瓦片 MVT / WMS 单图多图 / 样式创建切换更新 / 切片缓存 | api/02-tiles-styles | rasterTileUrl vectorTileUrl wmsTileUrl createMapStyle cmdSwitchLayers sliceLayer getSliceCacheZoom deleteStyle |
| 要素查询 / 构造实体几何 / 坐标转换 / WKT→PROJ4 | api/03-query | queryFeatures createEntityGeoData coordTransform prjWktToPrj4Str |
| 像素差异 / 实体对比 / 表格提取 / 中心线 / 目标匹配 / SVG→DWG | api/04-analysis | cmdMapDiff cmdMapCompare cmdExtractTable cmdExtractCenterLines cmdMatchObject cmdImageSvgToDwg |
| 组合新图 / 拆分子图 / 导出布局 / PDF / DXF / 离线瓦片包 | api/05-compose-export | cmdComposeNewMap cmdSplitMap cmdExportLayout cmdExportPdf cmdExportDxf cmdSaveOfflineTileDb |
| WebCAD 图列表 / 读数据 / 存补丁 / 删图 / 转 WebCAD / 导出 DWG | api/06-webcad(cmd 始终注册;/service/webcad 是前端 license 握手,不是启用探针) |
listWebcadDraws getWebcadData saveWebcadPatch deleteWebcadDraw convertWebcad exportWebcad |
| 工作区 增删改查 / 状态 | api/07-workspace | getWorkspaces workspaceCreate workspaceModify workspaceDelete workspaceStatus |
| KV 存储(配置/小数据) | api/08-data-storage | getCustomData saveCustomData deleteCustomData saveMultipleCustomData getCustomDataKeys |
| 全文搜索 | api/09-fullsearch | fullSearch fullSearchAdd fullSearchDelete |
| 符号库 | api/10-symbols | symbolCategories symbolList symbolGet |
| 心跳 / 版本 / 运行状态 / 日志 | api/11-system | heart version runStatus viewLogs |
| 二维码 / 字体 PBF / 传图片 | api/12-service-misc | qrcodeUrl glyphsUrl uploadImg |
| AI 向量搜索 / FAQ / 向量文档 | api/13-ai(条件启用) | vectorSearch chatFaq vectorDocs |
完整清单(URL + 方法 + SDK 方法名):references/inventory.md。约定与鉴权:conventions.md · authentication.md。入门:overview.md · getting-started.md · api/index.md(13 类接口导航)。
约定要点(先读)
- 所有
/api/v1/map/cmd/...GET/POST 均可(网关Router.Any);SDK 默认 POST。路径占位{mapid}/{version}见 conventions.md。 - web 服务响应包
{code,msg,data},SDK 自动 unwrap 成data;图形服务 JSON 原样返回;HTTP 非 2xx →VjmapError { status, url, body }。 rasterTileUrl({mapid,version,layer,z,x,y})是对象入参;z/x/y缺省返回{z}/{x}/{y}模板串(给前端地图库用)。- AI 组是条件启用——先
aiEnabled()探测,不可用就 skip,不要当错误。WebCAD cmd 始终注册,没有启用开关可探(GET /service/webcad是前端 license 握手,不带加密stamp就回 403error parameter!)。 - MCP(streamable HTTP,默认关闭,
mcp.enable)的鉴权与工具过滤见 authentication.md §7。 - 官方 SDK zip(python/nodejs/swagger UI):
http://vjmap.com/download/vjmapservice.zip;本 skill 已内置单文件版sdk/(nodejs / python)。
红旗
- REST 的
token只认请求头token(优先)或 query?token=;Authorization: Bearer仅 MCP 路由认(见 authentication.md)——别把 token 写进提交代码。 openMap第一次打开新图必须带fileid(上传响应里有);缺了返回"图不存在"。打开方式由 body 布尔geom决定(后端不读mapopenway,SDK 自动换算);GeomRender 首开回status:"working",要waitMapOpenFinish后再开一次。- 瓦片 URL 的
layer是样式图层名,switchlayer切的是显隐不是样式本身。 queryFeatures的查询体随几何类型(点/矩形/条件/表达式)差异大——按 api/03-query 的形态写,别套 REST 直觉。- 大文件上传是 multipart
uploads,先checkMapFile(md5)可秒传跳过。