Skip to main content
Glama

Turf-MCP

by es3154
MIT License
  • Apple
  • Linux
grid.py11.7 kB
# 网格生成函数 from fastmcp import FastMCP from turf_mcp.utils import call_js_script grid_mcp = FastMCP("grid") @grid_mcp.tool async def hexGrid(bbox: str, cell_size: float, options: str = None) -> str: """ 在边界框内生成六边形网格。 此功能在指定的边界框内创建六边形网格,用于空间分析和可视化。 Args: bbox: 边界框数组 - 类型: str (JSON 字符串格式的数组) - 格式: [minX, minY, maxX, maxY] - 示例: '[-180, -90, 180, 90]' cell_size: 网格单元大小 - 类型: float - 描述: 六边形外接圆的半径 - 示例: 50.0 options: 可选参数配置 - 类型: str (JSON 字符串) 或 None - 可选字段: - units: 距离单位 (默认: 'kilometers') - 有效值: 'miles', 'nauticalmiles', 'kilometers', 'meters', 'yards', 'feet', 'inches' - properties: 传递给所有六边形的属性对象 - mask: 用于裁剪网格的多边形特征 - 示例: '{"units": "miles", "properties": {"type": "hexagon"}}' Returns: str: JSON 字符串格式的 GeoJSON FeatureCollection - 类型: GeoJSON FeatureCollection with Polygon features - 格式: {"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {...}}, ...]} - 示例: '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {"type": "hexagon"}}, ...]}' Raises: Exception: 当 JavaScript 执行失败、超时或输入数据格式错误时抛出异常 Example: >>> import asyncio >>> bbox = '[-180, -90, 180, 90]' >>> result = asyncio.run(hexGrid(bbox, 50.0, '{"units": "miles"}')) >>> print(result) '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {...}}, ...]}' Notes: - 输入参数 bbox 和 options 必须是有效的 JSON 字符串 - 坐标顺序为 [经度, 纬度] (WGS84 坐标系) - 六边形网格提供均匀的空间覆盖,常用于地理分析 - 依赖于 Turf.js 库和 Node.js 环境 """ options_param = options if options else '{}' js_script = f""" const turf = require('@turf/turf'); const bbox = JSON.parse('{bbox}'); const cellSize = parseFloat({cell_size}); const options = JSON.parse('{options_param}'); const result = turf.hexGrid(bbox, cellSize, options); console.log(JSON.stringify(result)); """ try: return await call_js_script(js_script) except Exception as e: raise Exception(f"执行异常: {str(e)}") @grid_mcp.tool async def pointGrid(bbox: str, cell_size: float, options: str = None) -> str: """ 在边界框内生成点网格。 此功能在指定的边界框内创建规则分布的点网格,用于空间采样和插值。 Args: bbox: 边界框数组 - 类型: str (JSON 字符串格式的数组) - 格式: [minX, minY, maxX, maxY] - 示例: '[-180, -90, 180, 90]' cell_size: 网格单元大小 - 类型: float - 描述: 点之间的间距 - 示例: 50.0 options: 可选参数配置 - 类型: str (JSON 字符串) 或 None - 可选字段: - units: 距离单位 (默认: 'kilometers') - 有效值: 'miles', 'nauticalmiles', 'kilometers', 'meters', 'yards', 'feet', 'inches' - properties: 传递给所有点的属性对象 - mask: 用于裁剪网格的多边形特征 - 示例: '{"units": "miles", "properties": {"type": "grid_point"}}' Returns: str: JSON 字符串格式的 GeoJSON FeatureCollection - 类型: GeoJSON FeatureCollection with Point features - 格式: {"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [lng, lat]}, "properties": {...}}, ...]} - 示例: '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [-75.343, 39.984]}, "properties": {"type": "grid_point"}}, ...]}' Raises: Exception: 当 JavaScript 执行失败、超时或输入数据格式错误时抛出异常 Example: >>> import asyncio >>> bbox = '[-180, -90, 180, 90]' >>> result = asyncio.run(pointGrid(bbox, 50.0, '{"units": "miles"}')) >>> print(result) '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [-75.343, 39.984]}, "properties": {"type": "grid_point"}}, ...]}' Notes: - 输入参数 bbox 和 options 必须是有效的 JSON 字符串 - 坐标顺序为 [经度, 纬度] (WGS84 坐标系) - 点网格提供规则的空间采样点,常用于插值和统计 - 依赖于 Turf.js 库和 Node.js 环境 """ options_param = options if options else '{}' js_script = f""" const turf = require('@turf/turf'); const bbox = JSON.parse('{bbox}'); const cellSize = parseFloat({cell_size}); const options = JSON.parse('{options_param}'); const result = turf.pointGrid(bbox, cellSize, options); console.log(JSON.stringify(result)); """ try: return await call_js_script(js_script) except Exception as e: raise Exception(f"执行异常: {str(e)}") @grid_mcp.tool async def squareGrid(bbox: str, cell_size: float, options: str = None) -> str: """ 在边界框内生成正方形网格。 此功能在指定的边界框内创建正方形网格,用于空间分析和区域划分。 Args: bbox: 边界框数组 - 类型: str (JSON 字符串格式的数组) - 格式: [minX, minY, maxX, maxY] - 示例: '[-180, -90, 180, 90]' cell_size: 网格单元大小 - 类型: float - 描述: 正方形的边长 - 示例: 50.0 options: 可选参数配置 - 类型: str (JSON 字符串) 或 None - 可选字段: - units: 距离单位 (默认: 'kilometers') - 有效值: 'miles', 'nauticalmiles', 'kilometers', 'meters', 'yards', 'feet', 'inches' - properties: 传递给所有正方形的属性对象 - mask: 用于裁剪网格的多边形特征 - 示例: '{"units": "miles", "properties": {"type": "square"}}' Returns: str: JSON 字符串格式的 GeoJSON FeatureCollection - 类型: GeoJSON FeatureCollection with Polygon features - 格式: {"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {...}}, ...]} - 示例: '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {"type": "square"}}, ...]}' Raises: Exception: 当 JavaScript 执行失败、超时或输入数据格式错误时抛出异常 Example: >>> import asyncio >>> bbox = '[-180, -90, 180, 90]' >>> result = asyncio.run(squareGrid(bbox, 50.0, '{"units": "miles"}')) >>> print(result) '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {"type": "square"}}, ...]}' Notes: - 输入参数 bbox 和 options 必须是有效的 JSON 字符串 - 坐标顺序为 [经度, 纬度] (WGS84 坐标系) - 正方形网格提供规则的矩形区域,常用于统计和聚合 - 依赖于 Turf.js 库和 Node.js 环境 """ options_param = options if options else '{}' js_script = f""" const turf = require('@turf/turf'); const bbox = JSON.parse('{bbox}'); const cellSize = parseFloat({cell_size}); const options = JSON.parse('{options_param}'); const result = turf.squareGrid(bbox, cellSize, options); console.log(JSON.stringify(result)); """ try: return await call_js_script(js_script) except Exception as e: raise Exception(f"执行异常: {str(e)}") @grid_mcp.tool async def triangleGrid(bbox: str, cell_size: float, options: str = None) -> str: """ 在边界框内生成三角形网格。 此功能在指定的边界框内创建三角形网格,用于空间分析和表面建模。 Args: bbox: 边界框数组 - 类型: str (JSON 字符串格式的数组) - 格式: [minX, minY, maxX, maxY] - 示例: '[-180, -90, 180, 90]' cell_size: 网格单元大小 - 类型: float - 描述: 三角形每条边的长度 - 示例: 50.0 options: 可选参数配置 - 类型: str (JSON 字符串) 或 None - 可选字段: - units: 距离单位 (默认: 'kilometers') - 有效值: 'miles', 'nauticalmiles', 'kilometers', 'meters', 'yards', 'feet', 'inches' - properties: 传递给所有三角形的属性对象 - mask: 用于裁剪网格的多边形特征 - 示例: '{"units": "miles", "properties": {"type": "triangle"}}' Returns: str: JSON 字符串格式的 GeoJSON FeatureCollection - 类型: GeoJSON FeatureCollection with Polygon features - 格式: {"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {...}}, ...]} - 示例: '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {"type": "triangle"}}, ...]}' Raises: Exception: 当 JavaScript 执行失败、超时或输入数据格式错误时抛出异常 Example: >>> import asyncio >>> bbox = '[-180, -90, 180, 90]' >>> result = asyncio.run(triangleGrid(bbox, 50.0, '{"units": "miles"}')) >>> print(result) '{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [...]}, "properties": {"type": "triangle"}}, ...]}' Notes: - 输入参数 bbox 和 options 必须是有效的 JSON 字符串 - 坐标顺序为 [经度, 纬度] (WGS84 坐标系) - 三角形网格提供灵活的空间划分,常用于表面建模 - 依赖于 Turf.js 库和 Node.js 环境 """ options_param = options if options else '{}' js_script = f""" const turf = require('@turf/turf'); const bbox = JSON.parse('{bbox}'); const cellSize = parseFloat({cell_size}); const options = JSON.parse('{options_param}'); const result = turf.triangleGrid(bbox, cellSize, options); console.log(JSON.stringify(result)); """ try: return await call_js_script(js_script) except Exception as e: raise Exception(f"执行异常: {str(e)}")

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/es3154/turf-mcp'

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