Library that Merges Geo Spatial Shapes
Project description
Shape-Merge
A Python based GIS library for finding and merging all Geometries that intersects with their neighbour.
The library will iterate over all the geometries provided in the form of following Inputs,
and will look for the neighbours which forms an intersection relationship with its Parent
the geometry that looks for intersection is reffered as Parent
either through a direct intersection or an intersection link generated via multiple Child geometries which have a relationship associated with its Parent either as a direct neighbour or via mutiple neighbour is reffered to as a Child
intersection.
Installation
pip install shape-merge
Requirements
The library uses Rtree which has a dependency on libspatialindex, It is recommend to resolving the dependency through libspatialindex conda
LibSpatialIndex For Linux:
$ sudo apt-get update -y
$ sudo apt-get install -y libspatialindex-dev
LibSpatialIndex For Windows:
Experience is pretty grim for Windows Installation, i used conda for trouble free installation.
Rtree
conda install -c conda-forge rtree
Fiona
conda install -c conda-forge fiona
Inputs
ShapeFile
from shape_merge.merge import ShapeMerge
shape_merge = ShapeMerge()
shape_merge.populate_index_by_fiona(r"path_to_shape_file.shp")
GeoJSON
from shape_merge.merge import ShapeMerge
shape_merge = ShapeMerge()
shape_merge.populate_index_by_geojson(r"path_to_geo_json.geojson")
Iteratively populate the index
from shape_merge.merge import ShapeMerge
shape_merge = ShapeMerge()
for feature in feature_collection:
shape_merge.populate_index_by_feature(feature)
Feature must be of the following structure:
{'type': 'Feature', 'id': str, 'properties': dict, 'geometry': {'type': 'GeometryType', 'coordinates': list}}
How to run
After Populating the Index, merging is matter of a function call away, execute the following to begin merging:
shape_merge.merge_geometries()
Output
The Output will be a collection, which will contain the merged geometries and the all the ids that were merged together
merged_geoemrty = OrderedDict([(0, {'ids': [ ], 'geometry': {'type': 'GeometryType', 'coordinates': []}})])
Parameters
bounds_buffer :
During rtree index creation the bounds of individual geometry are added with buffer of 0, This param controls on how big the original bounds should grow.
geometry.bounds.buffer(self.__bounds_buffer)
The bounds of the geometry are responsible for finding potential intersecting neighbour i.e everything that lies in the bound is considered as a potential neighbour. A large value of bound value will increase the computational overhead.
geometry_buffer:
Add buffer to geometries while checking if they intersect with each other
geometry_1.buffer(self.__geometry_buffer).intersects(geometry_2.buffer(self.__geometry_buffer))
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
Built Distribution
File details
Details for the file shape_merge-1.0.3.tar.gz
.
File metadata
- Download URL: shape_merge-1.0.3.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 985ca0c1e76ab61d53ad4ffc8b53165e32efbcc9a6d0ad46782edd821f438e20 |
|
MD5 | 1232a8c339ec4bc0632320d65b3821e5 |
|
BLAKE2b-256 | fd86b38d0c8815598c9bee2973a6956f048d436c1cb3692c2f2547a5fc5e6e0e |
File details
Details for the file shape_merge-1.0.3-py3-none-any.whl
.
File metadata
- Download URL: shape_merge-1.0.3-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8371440d04280e6cd15427905e9b1eb5af8122698f574f2a8f4900fff8b5a028 |
|
MD5 | cb1433501e902579eb77b69a9c7392ee |
|
BLAKE2b-256 | 21c3ddd490d41122180ce780e6a68085c110e47008073e1cbadc0fd674b7a7b0 |