Geography Prompts: A Practitioner's Guide to Getting Spatial Data Right
I spent three months rebuilding a mapping pipeline because the original version kept pulling in elevation data when I only wanted road networks. That was my introduction to how broken prompt engineering is in this space. Most people treat Geography Prompts like they're asking a search engine a question. They're not. You're building a structured extraction system, and the difference matters more than most tutorials admit. Geography Prompts is a methodology for constructing AI queries that extract, describe, or generate geospatial data with high specificity. Unlike a regular geography question, these prompts embed coordinate systems, spatial resolution targets, and layer specifications directly into the query structure. The output is supposed to be machine-parseable, not essay-formatted. When I first started using them, I thought the trick was just adding more detail. It's not. The trick is knowing exactly which details constrain the output without bloating the prompt into uselessness. A Geography Prompts workflow usually takes about 10 to 15 minutes to set up for a one-off query, but getting it right means understanding how the underlying model interprets spatial language.
The Structure That Works
Here's the format I use after burning through several failed attempts. You start with the geographic scope, then the data layers, then the output specification. Like this: Scope: [specific region with coordinates or bounding box]
Layers: [what you want extracted — roads, water, buildings, terrain]
CRS: [coordinate reference system — EPSG:4326, EPSG:3857, etc.]
Resolution: [detail level — country, city, neighborhood, block]
Output: [GeoJSON, CSV, shapefile, text description] I learned this structure the hard way. Early on I'd write something like "Give me all the rivers in the Pacific Northwest" and get back paragraphs of prose about the Columbia River basin. Useless for any pipeline. Now I write "Extract all waterway features in bounding box 45.5N-49N, 124.5W-116.5W. Output: GeoJSON with hydro line features only. CRS: EPSG:4326." The output is structured data I can drop straight into PostGIS.
A Real Problem I Hit and How I Fixed It
Last year I was working on a project that needed parcel-level boundary data for a mid-sized US city. The Geography Prompts I wrote returned valid GeoJSON, but the polygons were all over the place — some parcels had reversed rings, others had self-intersections, and a handful of features were encoded as MultiPolygon when they should have been simple Polygon. Took me four hours to write a validation and repair script. The workaround was adding a constraint to the prompt itself. Instead of just asking for parcel boundaries, I specified the geometry type and added a note about ring orientation. Something like "Output only valid Polygon geometries with clockwise exterior rings and counter-clockwise interior rings where applicable." The model doesn't always follow this perfectly, but it cut down the repair work from four hours to maybe twenty minutes. Not fixed, just manageable.
Get the Full Details

Counter-Intuitive Things Nobody Tells You
One thing that surprised me: being more specific about the region can actually hurt your results. I was trying to get accurate geographic data for a small municipality in rural Montana. The model had limited training data on that area, and the more specific I got, the more it started hallucinating street names and property lines. A broader prompt asking for the county-level geography returned more reliable results, and I could fill in the municipal details from local government sources afterward. Sometimes Geography Prompts work better when you aim lower resolution than you think you need. Another thing: the choice of coordinate reference system in your prompt doesn't just affect the output format, it affects accuracy. I once specified Web Mercator (EPSG:3857) for a coastal mapping project and got distances that were wildly inflated near the poles of projection. Switching to a local UTM zone fixed it, but I lost the ability to easily overlay the data on standard basemap tiles. There's no free lunch here. Pick your CRS based on what you're doing with the data, not what's most convenient.
Where This Breaks Down
Let's be honest about the limitations. Geography Prompts struggle with three areas. First, recent changes. If a new highway opened last month or a city redrew its boundaries, the model won't know. These systems train on data that's months or years old. Second, underrepresented regions. Small towns, developing nations, remote areas — the model's geographic knowledge thins out fast once you move outside major urban centers. Third, ambiguity in place names. "Springfield" is a problem. So is "Portland." Always include state or country disambiguation. If you need current, authoritative geographic data, there are better sources. OpenStreetMap updates are usually faster. Government GIS portals are more reliable for official boundaries. Geography Prompts are best used for descriptive tasks, data format conversion, or when you need to bridge between formats that don't play nicely together. They're not a replacement for proper geospatial data sourcing.
Practical Tips That Actually Matter
Use GeoJSON as your default output format. It's the most universally supported structure and works with QGIS, ArcGIS, Mapbox, Leaflet, and basically anything else you might feed it into later. CSV is fine for attribute tables but loses geometry information. When you're iterating on a prompt, test it with edge cases first. Ask for data on a region you know well, then check whether the output matches reality. If you're mapping Chicago and the model puts a lake where the expressway should be, you've got a systematic issue, not a one-off error. Batch your requests when possible. Each Geography Prompts call costs time and API credits. If you need data for multiple regions, combine them into a single prompt with clear delineation rather than firing off separate queries. I've seen this cut processing time from an hour to about fifteen minutes on projects with ten or more regions.

Keep a prompt library. The structures that work for one type of query don't necessarily transfer to another. I maintain a folder of tested prompts organized by use case — boundary extraction, feature classification, coordinate conversion, descriptive geography. Takes five minutes to add a new one after a successful run, and saves you from reinventing the wheel next time.
When to Use Something Else Instead
If you need exact parcel boundaries for legal purposes, use county assessor GIS data. If you need real-time traffic geometry, use an API like Mapbox or Google Roads. If you need elevation profiles along a route, use SRTM or LiDAR data sources. Geography Prompts fill a specific niche — rapid prototyping, format transformation, descriptive queries, and situations where you need to generate structured geographic data quickly without running a full ETL pipeline. They're not the answer to everything, and pretending otherwise just wastes your time. The tools and techniques around this space evolve constantly. What worked six months ago might not work today. Stay current, test your outputs, and don't trust the first result you get without validation. That's about all there is to it.