I am working on a project right now that involves using multiple (very large) "location directories" to identify with the highest possible inclusiveness, a diverse set of business locations.

These locations are often geotagged close to one another but typically not directly on top of one another.

For example, if a walmart was in one database at the NW corner of its parking lot, in another database it might be in the SE corner. In this example the two points might be as far as 2000ft apart. I'm using the extreme examples to create some basic buffer rules (after consolidating brandnames to identify same-brand store locations) for allowing my program to identify duplicate locations.

But there are also some business locations that have closed. Some are geocoded directly on top of the "center of town" (i.e. they had an address of "Cityname, State" and got geocoded incorrectly in the middle of town).

There are a lot of other edge cases and I guess what I'm asking is, is there some python code package or qgis plugin or ruby gem (haha, just kidding) or some other larger abstract object oriented design pattern (way of thinking) that somebody learned as a Computer Science major to handle (entity validation & consolidation) problems like this?

I'm perfectly will and able to cook up my own solutions but don't want to miss out on sophisticated techniques and/or waste my time reinventing potentially less-effective, more time-consuming solutions for managing entity databases.

Am perfectly willing to modify, close this question or migrate it to another forum if a mod or mods thinks this something is not appropriate here. Please comment before taking any administration or negative voting action.

The technology I'm using currently is a ruby on rails database running a postgis database. I extensively utilize activerecord to manage my data. I also use qgis plugins a lot and am building a growing capability set with python though still very much a beginner.

1 Answer 1


buffer exclude points within distance range based on error testing. Your probably not looking for a merge but an exclusion based on factors such as position, date accuracy, goodness of data sets. Then you can compare and contrast and compare cleaned data, do checking through research to establish baseline for goodness improvement, run secondary process against version ed data pools, do re sample checking and error analysis add infinitum till you achieve a desired goodness. Write up a spec for your process tree and viola! you have an object oriented approach, just sub define what the objects are then composed of for the purposes defined. Edges aren't particularly relevant unless you want to include or exclude shifts based on buffer by zip code, municipality, county, etc. Building tables based on addressing edges might be prohibitive in terms of operation, conceptualization, and implementation. So spatial operation would be simpler and provide more traction and a better result.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.