{"library":"simplification","title":"Fast Linestring Simplification","description":"The `simplification` library provides highly optimized linestring (polyline) simplification using either the Ramer-Douglas-Peucker (RDP) or Visvalingam-Whyatt algorithms. It achieves high performance by leveraging a Rust binary through Python's Foreign Function Interface (FFI). The library is currently at version 0.7.14 and appears to be actively maintained with frequent minor releases.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install simplification"],"cli":null},"imports":["from simplification.cutil import simplify_coords","from simplification.cutil import simplify_coords_vw","from simplification.cutil import simplify_coords_vwp"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import numpy as np\nfrom simplification.cutil import simplify_coords, simplify_coords_vw\n\n# Example coordinates (list of lists or NumPy array)\ncoords_list = [\n    [0.0, 0.0],\n    [5.0, 4.0],\n    [11.0, 5.5],\n    [17.3, 3.2],\n    [27.8, 0.1]\n]\ncoords_np = np.array(coords_list)\n\n# --- Ramer-Douglas-Peucker (RDP) Simplification ---\n# Epsilon: maximum distance between an original point and the simplified line segment\nepsilon_rdp = 1.0\nsimplified_rdp = simplify_coords(coords_list, epsilon_rdp)\nprint(f\"RDP Simplified (epsilon={epsilon_rdp}): {simplified_rdp}\")\n\n# --- Visvalingam-Whyatt (VW) Simplification ---\n# Threshold: minimum effective area of a triangle formed by a point and its neighbors\nthreshold_vw = 30.0\nsimplified_vw = simplify_coords_vw(coords_np, threshold_vw)\nprint(f\"VW Simplified (threshold={threshold_vw}): {simplified_vw}\")","lang":"python","description":"This quickstart demonstrates how to simplify a linestring using both the Ramer-Douglas-Peucker (RDP) and Visvalingam-Whyatt (VW) algorithms. It showcases usage with both standard Python lists of coordinates and NumPy arrays, which are efficiently handled by the underlying Rust implementation. For RDP, `epsilon` defines the tolerance, while for VW, `threshold` represents a minimum effective area.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.7.13","pypi_latest":"0.7.14","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":3.7,"avg_import_s":0.33,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"simplification","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"simplification","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4,"import_time_s":0.26,"mem_mb":9.4,"disk_size":"88M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"simplification","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"simplification","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":0.36,"mem_mb":10.4,"disk_size":"95M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"simplification","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"simplification","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":0.42,"mem_mb":10.3,"disk_size":"83M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"simplification","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"simplification","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":0.37,"mem_mb":10.1,"disk_size":"83M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"simplification","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"simplification","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.3,"import_time_s":0.26,"mem_mb":9.1,"disk_size":"98M"}]}}