feat: extend agent-driven map workbench

This commit is contained in:
2026-07-20 19:57:35 +08:00
parent 86e9b08235
commit 7fbd8a5618
63 changed files with 4506 additions and 457 deletions
+28 -21
View File
@@ -1,23 +1,30 @@
import type { VectorSourceSpecification, StyleSpecification } from "maplibre-gl";
import { MAP_URL } from "../../../lib/config";
import { GEOSERVER_WORKSPACE, MAP_URL } from "../../../lib/config";
import { MAP_STYLE_TOKENS } from "./map-colors";
export const WATER_NETWORK_GLOBAL_VIEW = {
bbox3857: [
13551482,
3612812.75,
13577696,
3632065.75
13429008,
3243604.5,
13443327,
3251999.25
]
} as const;
const WATER_NETWORK_BOUNDS: [number, number, number, number] = [
120.63483136963328,
27.957404243937606,
120.76346113516635,
28.02399422971424
];
export const SOURCE_LAYERS = {
conduits: "geo_conduits_mat",
junctions: "geo_junctions_mat",
orifices: "geo_orifices_mat",
outfalls: "geo_outfalls_mat",
pumps: "geo_pumps_mat",
scada: "scada_points"
scada: "geo_scadas_mat"
} as const;
export const WATER_NETWORK_SOURCE_IDS = [
@@ -35,41 +42,41 @@ const GEOSERVER_WMTS_ROOT = `${MAP_URL}/gwc/service/wmts/rest`;
export function createWaterNetworkSources() {
return {
conduits: createLingangVectorSource(
conduits: createGeoServerVectorSource(
SOURCE_LAYERS.conduits,
"line",
[121.7350340307058, 30.84636502815, 121.97051839928491, 30.994737681416165]
WATER_NETWORK_BOUNDS
),
junctions: createLingangVectorSource(
junctions: createGeoServerVectorSource(
SOURCE_LAYERS.junctions,
"point",
[121.7350340307058, 30.84636502815, 121.97051839928491, 30.994737681416165]
WATER_NETWORK_BOUNDS
),
orifices: createLingangVectorSource(
orifices: createGeoServerVectorSource(
SOURCE_LAYERS.orifices,
"line",
[121.88611269518903, 30.919491577239235, 121.9347115520599, 30.952564332104696]
WATER_NETWORK_BOUNDS
),
outfalls: createLingangVectorSource(
outfalls: createGeoServerVectorSource(
SOURCE_LAYERS.outfalls,
"point",
[121.77154156385242, 30.85723317314842, 121.77231411499677, 30.859452151585806]
WATER_NETWORK_BOUNDS
),
pumps: createLingangVectorSource(
pumps: createGeoServerVectorSource(
SOURCE_LAYERS.pumps,
"line",
[121.73585149761436, 30.861759757577705, 121.9498481645973, 30.983213202338085]
WATER_NETWORK_BOUNDS
),
scada: createLingangVectorSource(
scada: createGeoServerVectorSource(
SOURCE_LAYERS.scada,
"point",
[121.7350340307058, 30.84636502815, 121.97051839928491, 30.994737681416165],
"scada_id"
WATER_NETWORK_BOUNDS,
"sensor_id"
)
};
}
function createLingangVectorSource(
function createGeoServerVectorSource(
sourceLayer: (typeof SOURCE_LAYERS)[keyof typeof SOURCE_LAYERS],
style: "line" | "point",
bounds: [number, number, number, number],
@@ -79,7 +86,7 @@ function createLingangVectorSource(
type: "vector",
promoteId,
tiles: [
`${GEOSERVER_WMTS_ROOT}/lingang:${sourceLayer}/${style}/WebMercatorQuad/{z}/{y}/{x}?format=application/vnd.mapbox-vector-tile`
`${GEOSERVER_WMTS_ROOT}/${GEOSERVER_WORKSPACE}:${sourceLayer}/${style}/WebMercatorQuad/{z}/{y}/{x}?format=application/vnd.mapbox-vector-tile`
],
bounds,
minzoom: 0,