Skip to main content
Glama
receptopalak

PostGIS MCP Server

by receptopalak

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
NameRequiredDescriptionDefault
geometry_wktYesWKT formatında geometri
preserve_collapsedNoÇöken geometrileri koru
toleranceYesBasitleştirme toleransı

Implementation Reference

  • 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
            ),
          },
        ],
      };
    }
  • 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"],
      },
    },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/receptopalak/postgis-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server