lead by the NC State Center for Geospatial Analytics
NSF Grant Lead by NC State
NSF grant awarded to NC State, ASU, NMSU, Yale
To enhance infrastructure
To revise contributing guidelines
To support community building
The NSF program is not funding new tools, bug fixes, or ongoing maintenance
Open-Source Licensing
Organizations:
Clear technology transfer path for research code.
Provider-independent, contractor-independent.
Financial investments go to a public pool.
Pay for support and features, not usage.
No per-CPU license fees.
Individuals:
Author retains right to use.
Employer-independent.
Work computer, personal laptop, or cloud.
Is it clear how to use it? ✓
What happens when my funding ends? ✓
Does it work with the new software versions? ✓
What if I don't want to touch it anymore? ✓
What if I need to use it again? ✓
How someone else will know about it? ✓
Can someone use it in a different way? ✓
How can I combine it with some other code?
How can I use it with different data?
Reusability
Categories of Tools
Name convention and associated parameter conventions
Prefix
Functionality
Example
r.
raster processing
r.mapcalc: raster map algebra
v.
vector processing
v.surf.rst: interpolation from points
g.
general management
g.remove: removes maps
d.
display and rendering
d.rast: display raster map
There is more: i., t., r3., m., ps.
Unified Interfaces
Latest example: JSON output format support (format="json") in multiple tools (v.db.select, t.rast.list, …)
v.db.select roadsmajor format=json
With better integration in Python:
import json
import grass.script as gs
data = gs.parse_command("v.db.select", map="roadsmajor", format="json")
for row in data["records"]:
print(row["ROAD_NAME"])
More coming in 8.5
(r.report, r.info, …)
by Anna Petrasova, Vaclav Petras, Huidae Cho, Kriti Birda, Corey White, and others
Transitions Between Interfaces
Command line (Bash):
Python:
Projects
Projects separate concerns of data preparation and data analysis.
Projects keep the data consistent.
Same format and CRS for all data.
Mapsets keep the data organized within a project.
Work is happening in one mapset, but data from any mapset can be used.
import grass.script as gs
gs.create_project("/path/to/project", epsg="3358")
Computational Region
extent and resolution for raster computations
Carrier-long Reusability
Technologies which stay and don't disapear in couple years.
Bash scripting, Python, GRASS
Longetivity, open-source, platfrom-idependent
Things develop, versions update, features are added...