simplify-geometry
Simplify complex geometries using the Douglas-Peucker algorithm, reducing vertices while preserving shape. Specify WKT geometry and tolerance for spatial data optimization.
Instructions
Geometriyi basitleştir (Douglas-Peucker algoritması)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| geometry_wkt | Yes | WKT formatında geometri | |
| preserve_collapsed | No | Çöken geometrileri koru | |
| tolerance | Yes | Basitleştirme toleransı |
Implementation Reference
- server.ts:1567-1620 (handler)Handler for the 'simplify-geometry' tool. Parses input using SimplifyGeometrySchema, determines simplify function (ST_Simplify or ST_SimplifyPreserveTopology), executes PostGIS query to simplify geometry, computes metrics like point count and area before/after, and returns detailed JSON response including reduction ratio.case "simplify-geometry": { const { geometry_wkt, tolerance, preserve_collapsed } = SimplifyGeometrySchema.parse(args); const simplifyFunc = preserve_collapsed ? "ST_SimplifyPreserveTopology" : "ST_Simplify"; const result = await client.query( ` SELECT ST_AsText(${simplifyFunc}(ST_GeomFromText($1), $2)) as simplified_wkt, ST_AsGeoJSON(${simplifyFunc}(ST_GeomFromText($1), $2)) as simplified_geojson, ST_NumPoints(ST_GeomFromText($1)) as original_points, ST_NumPoints(${simplifyFunc}(ST_GeomFromText($1), $2)) as simplified_points, ST_Area(ST_GeomFromText($1)::geography) as original_area, ST_Area(${simplifyFunc}(ST_GeomFromText($1), $2)::geography) as simplified_area `, [geometry_wkt, tolerance] ); return { content: [ { type: "text", text: JSON.stringify( { input_geometry: geometry_wkt, tolerance: tolerance, preserve_collapsed: preserve_collapsed, simplified_wkt: result.rows[0].simplified_wkt, simplified_geojson: JSON.parse( result.rows[0].simplified_geojson ), original_points: result.rows[0].original_points, simplified_points: result.rows[0].simplified_points, original_area_sqmeters: parseFloat(result.rows[0].original_area) || 0, simplified_area_sqmeters: parseFloat(result.rows[0].simplified_area) || 0, reduction_ratio: result.rows[0].original_points > 0 ? 1 - result.rows[0].simplified_points / result.rows[0].original_points : 0, }, null, 2 ), }, ], }; }
- server.ts:88-92 (schema)Zod input schema for 'simplify-geometry' tool validating geometry_wkt (string), tolerance (number), and optional preserve_collapsed (boolean). Used for parsing arguments in the handler.const SimplifyGeometrySchema = z.object({ geometry_wkt: z.string(), tolerance: z.number(), preserve_collapsed: z.boolean().optional().default(false), });
- server.ts:752-772 (registration)Tool registration in ListToolsRequestHandler, defining name, description, and JSON inputSchema matching the Zod schema for client tool listing.name: "simplify-geometry", description: "Geometriyi basitleştir (Douglas-Peucker algoritması)", inputSchema: { type: "object", properties: { geometry_wkt: { type: "string", description: "WKT formatında geometri", }, tolerance: { type: "number", description: "Basitleştirme toleransı", }, preserve_collapsed: { type: "boolean", description: "Çöken geometrileri koru", }, }, required: ["geometry_wkt", "tolerance"], }, },