Data Over Software

One of the first tasks I ever had in my then-new GIS career was doing AML development in ARC/INFO 6.x for a data production project. My code parsed DXF exported from AutoCAD R11 for DOS and then assigned attributes based on things like layer, color, line weight, feature type, and others. It also georeferenced the data based on tic marks captured in AutoCAD. The end result was multiple ARC/INFO coverages that were fully populated from data templates based on the AutoCAD characteristics. From there, QA analysts tailored the data from defaults, if necessary.

After that, I did a lot of work in AML to build a cartographic production system for a water utility. That had me building a GUI using ARC/INFO forms and developing customized editing tools with ArcEdit in ArcPlot mode.

As you can imagine, I dug deeply into AML. I learned a lot about GIS – in which I had no formal training. Because AML essentially batched the same commands the analysts used at the command line, all of this development made me quite proficient with ARC/INFO. Those were fun times. Because I needed to learn GIS, this period had a lot of value for me.

As a software developer, however, there was a big drawback that is evident in the full name of AML – Arc Macro Language. All of the time and effort I was investing into building proficiency in AML was usable in exactly one place. The same was true when ArcView came along with its proprietary object-oriented language, Avenue.

Read more

Integrating Stripe with BigQuery

One of the projects that I mentioned in my post a couple of weeks ago was the migration of our billing system to Stripe. Stripe is widely used for billing on the internet, in both SaaS and non-SaaS use cases. A while back, I wrote about the general limitations of IPaaS platforms in terms of flexibility and Stripe exposes a lot of these.

One particular product did not expose all of the object type we needed to extract from Stripe. Another simply did not sync all of the object types it claimed to be syncing. A third had a clear bug in which it wrote the current date/time into all date fields. In each of these cases, we were left to file support tickets and wait. I moved on.

Read more

ToGeoJson and ToWKT for the Esri FGDB API

In support of some of our ongoing PIM work, we’ve been integrating the Esri File Geodatabase (FGDB) API into some tools. Without going into a level of detail that would hijack this post, one of the many functions performed by some of the tools is to validate physical spatial databases against established data models to analyze compliance and identify differences. These databases may be in Esri or non-Esri formats and we have traditionally handled Esri geodatabases through ArcObjects since it provides a relatively uniform interface across the various flavors of geodatabase.

Of course, ArcObjects requires an ArcGIS license of some sort and we are finding out that this is not always available to users in the field under many situations so the FGDB API gets past that for file geodatabases, at least.

Read more

Using GeoIQ Analytics in .Net Applications

A few weeks ago, I posted about some .Net wrappers I created for the GeoIQ API. Due to ongoing project work, I have continued to extend them by adding methods to wrap GeoIQ analytical capabilities. Despite the recent acquistion of GeoIQ by Esri, it’s my understanding that GeoCommons and existing GeoIQ installations will continue for some time. That’s good, because analytics on the GeoIQ platform are powerful and fairly easy to use. This post will demonstrate how to use analytics in a .Net application.

As previously posted, the .Net wrappers can be found on github here.

The GeoIQ platform offers several functions to analyze data sets hosted on a GeoIQ instance or GeoCommons. I have not yet wrapped all of the functions but am working my way through them as I can.

For this post, I will intersect the locations of US GISPs as of 1/26/2011 with the Maryland Zip Code Boundaries to produce a data set containing the locations of GISPs in Maryland, depicted in the map below.

Don’t worry, none of these are me.

Read more

GeoIQ API Wrappers for .Net

A while back, I built a small interface between GeoIQ/GeoCommons and ArcGIS Desktop. From there, it became more of a full-fledged toolbar for ArcGIS. During that effort, I began developing some .Net classes to wrap the GeoIQ RESTful API. As we progressed with the toolbar, my colleague Hugo Estrada also contributed to the library.

The original intent was to wrap the entire API but it turns out that we were undertaking this in the middle of GeoIQ’s upgrade to version 2.0. In the intervening time, we got some projects implementing the GeoIQ platform for end users (such as the Climascope portal that Andrew Turner recently blogged about).

Read more

Piling On About Python

First and foremost, I am not a Python expert. I am not even sure I could effectively play one on TV. As I mentioned at the beginning of the year, I am trying to beef up my Python skills.

Secondly, what I have to say in this post isn’t particularly original or unique. Others have said it before.

So I am posting this because I have fielded some form of this question at least ten times (no exaggeration) in the past couple of months: “What skill do you recommend most for someone getting into GIS today?”

Read more

Working with the GeoIQ Features API

I find myself pointing people to GeoCommons for data more often these days. With over 50,000 data sets, there’s a lot there. The people I work with seem to usually be able to find data of value there so I’ve been putting a little time into making it easier to get data from GeoCommons. As I’ve mentioned before, many of them are long-standing ESRI users. While they are becoming more aware of alternate tools and data sources, it is still important for them to be able to get data into the ESRI environment where their custom tools reside.

Given the content of my recent posts, it’s no secret that my recent project work has involved the ESRI Silverlight API so I decided extend it to more easily access data from GeoCommons.

Recently, GeoIQ pubished an update to their RESTful API that includes a “Features API,” which gives you a little more direct access to the features in a GeoIQ data set (GeoIQ is the platform upon which GeoCommons is built). Previously, if I needed to access data from GeoCommons in the ESRI Silverlight API, I would just access it as KML using the native KmlLayer class. The GeoIQ Features API, however, offers more fine-grained control over how much data we return in the form of various query parameters. Currently, the API only returns JSON (GeoIQ’s own syntax or GeoJSON) so it was time to do something different.

Read more

Simple Annotations With the Esri Silverlight API

In a previous post, I mentioned that I developed a MeasureString function for use in developing an annotation tool. In this post, I’ll go into a little bit more detail about that tool. For purposes of discussion, I extended the interactive graphics sample from the Esri Silverlight API interactive SDK.

For starters, I added another tool to the sample’s tool bar (circled in red below) to provide access to the annotation capability.

Read more