Code & tools

CSV Survey Points

Field observations often arrive as spreadsheet rows, while the questions about them are spatial. I built this tool to turn a CSV of survey IDs, coordinates and species presence into a GIS point layer. It also summarises the recorded presence locations so their geographic spread can be checked alongside the map.

Input coordinates
Degrees, minutes and seconds
Output system
WGS 84
Tools
ArcGIS Pro, ArcPy, Python, CSV

Making the observations mappable

I import the CSV into a temporary table and add decimal latitude and longitude fields. The script reads degrees, minutes, seconds and hemisphere from each coordinate string, converts them to decimal degrees and warns when a coordinate cannot be converted.

The converted fields become an XY event layer, which I export as a WGS 84 point feature class. The output places the survey records in a form that can be displayed, queried and compared with other GIS layers without manually entering each point.

Reading the presence summary

For records marked present, the tool counts observations and reports up to three northernmost, southernmost, easternmost and westernmost locations. These help identify the edges of the recorded observations and give the reader specific survey locations to inspect.

Those extremes describe the supplied records, not the species' full range. Areas without records may not have been surveyed, and a small coordinate error can affect an extreme location. I would review conversion warnings and check the mapped positions before interpreting the summary. The CSV field names and coordinate strings also need to follow the format expected by the script.

Data and references

Get in touch

I’m looking for GIS opportunities across Canada. You can reach me by email or on LinkedIn.