Provide support for GIS on a single process, in a way that is similar to the RepastS Geography projection. Single-process GIS will come with the caveat that the Geography won't automatically move agents across process and should only be used on a 0-rank model.
At minimum, this should include:
Geography projection or container
Add / move / remove agent - geography pairs to the geography
Get agent geometry from Geography
Spatial index in geography for spatial queries of objects within bounding box
Coordinate Reference System (CRS) support in Geography
Shapefile loading and/or agent-factory from shapefile feature data
Python packages for implementation:
Shapely - provides JTS-style geometry classes (Point, Line, Polygon) and spatial functions like intersect, distance, etc.
U. of C. spatial data group suggested hierarchical spatial data formats: "h3", "s2" -- https://h3geo.org/
GeoPandas provides a lot of the functionality we had in GeoTools (I/O, space predicates, CRS, etc), however the data are stored in a geo dataframe (pandas) and we suspect not suitable for frequent inserts/deletions of agents. Since the pandas dataframes leverage numpy and C++ under the hood for speed, we might be able to use the dataframe as the space’s agent-geometry mapping – assuming that’s compatible with the repast4py projections.
Provide support for GIS on a single process, in a way that is similar to the RepastS Geography projection. Single-process GIS will come with the caveat that the Geography won't automatically move agents across process and should only be used on a 0-rank model.
At minimum, this should include:
Python packages for implementation:
Shapely - provides JTS-style geometry classes (Point, Line, Polygon) and spatial functions like intersect, distance, etc.
fiona - Shapefile loading in a way that supports generating Shapely geometries
pyproj - CRS projection types and transforms
rtree - spatial indexing
GeoPy for geodetic (distance) calculations
RasterIO for read/write raster data
U. of C. spatial data group suggested hierarchical spatial data formats: "h3", "s2" -- https://h3geo.org/
GeoPandas provides a lot of the functionality we had in GeoTools (I/O, space predicates, CRS, etc), however the data are stored in a geo dataframe (pandas) and we suspect not suitable for frequent inserts/deletions of agents. Since the pandas dataframes leverage numpy and C++ under the hood for speed, we might be able to use the dataframe as the space’s agent-geometry mapping – assuming that’s compatible with the repast4py projections.