Skip to main content

A Python library implementing a method for splitting a polygon into regions

Project description

polysplit

A lightweight library for splitting polygons into regions based on proximity of points.
License: MIT issues codecov Build Status

Overview

Map quantization is the procedure of dividing a continuous map into a number of discrete regions. The simplest approach that has been used for hundreds of years is to overlap the map with a square grid. However, this approach ignores the geographical features of the map, making it suboptimal for certain applications. With this project, I would like to propose a novel algorithm that organically divides any given map into regions based on the relative travel time between different areas.

In its simple form, the proposed algorithm could be applied to a map (a polygon) with intraversible obstacles (holes). It works in 2 stages. In the first stage, the map is overlayed with a fine grid of $N$ points. Then, we calculate the shortest path (around the obstacles) betweeen every pair of points and construct the $N \times N$ distance matrix. In the second stage, we apply the k-medoids algorithm to the set of points, using the matrix from stage I as a distance function, and retrieve a set of $M$ centers. Finally, we construct a Voronoi graph around the centers, creating the regions.

Installation

pip install polysplit

Sample usage

import polysplit
from shapely.geometry import Polygon

# Create a polygon with a hole
outer_coords = [(0, 0), (0, 1), (1, 1), (1, 0)]
hole_coords = [(0.4, 0.4), (0.4, 0.6), (0.6, 0.6), (0.6, 0.4)]
polygon = Polygon(outer_coords, [hole_coords])

# Split the polygon
regions = polysplit.polysplit_main(polygon, k=5, num_points=100, plot=True)
print(regions)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

polysplit-0.1.2.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

polysplit-0.1.2-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file polysplit-0.1.2.tar.gz.

File metadata

  • Download URL: polysplit-0.1.2.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for polysplit-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c80ac3fe2f534b3124578e59935739a7d4498bf19a6e000f05daf0a68c7c55e8
MD5 b7c630751a43752c29fdf32b26d150e6
BLAKE2b-256 72024b7b57a87e3a14562333989395bd12cb957d327fb7045502c2c76eb93954

See more details on using hashes here.

File details

Details for the file polysplit-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: polysplit-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for polysplit-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5e8174c9ab8c15481d2acc9036965dde4b0a73b181a1522b1cb2ae2c87c917ac
MD5 8aaf3016d946eaa36ff34f0a2b177beb
BLAKE2b-256 1abba2ed047c07b98db1f803c56dc451bbab47a1651ef78aa22daed4d9ef0892

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page