Skip to content

Instantly share code, notes, and snippets.

Created July 18, 2012 17:53
Show Gist options
  • Save geobabbler/3137738 to your computer and use it in GitHub Desktop.
Save geobabbler/3137738 to your computer and use it in GitHub Desktop.
Windows form showing the use of GeoIQ4Net to call analysis functions
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GeoIQ.Net;
using GeoIQ.Net.Data;
namespace GeoIQBootstrap
public partial class IntersectDemo : Form
private System.Timers.Timer _layerTimer = new System.Timers.Timer(500); //to check status of analysis
private AnalyticsResponse _response = null; //response object created by analysis
private Analytics _analytics = new Analytics("", "username", "password"); //wrapper class for GeoIQ analytic methods
public IntersectDemo()
//initialize time and link label
_layerTimer.Enabled = false;
_layerTimer.Elapsed += new System.Timers.ElapsedEventHandler(_layerTimer_Elapsed);
this.lnkDownloadShape.Visible = false;
void _layerTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
string status = _analytics.GetState(_response.ID); //ID is that of new layer created by analysis
if (status.ToLower() == "\"complete\"") //this means analysis is complete
//use Invoke to access UI elements from timer thread
this.Invoke(new MethodInvoker(delegate
//set up link label to enable download of new data as KML
this.lnkDownloadShape.Text = "Analysis Complete: Download KML";
this.lnkDownloadShape.Links.Add(19, 18, "" + _response.ID.ToString() + ".kml");
this.lnkDownloadShape.Visible = true;
this._layerTimer.Enabled = false;
private void btnIntersect_Click(object sender, EventArgs e)
//call intersect method
//layer 87503 = GISPs, layer 149925 = zip codes
//prefer_1 tells GeoIQ to return records from layer 1 (GISPs in this case)
_response = _analytics.Intersect(87503, 149925, MergeOptions.prefer_1); //capture response object
//start timer to check status
this._layerTimer.Enabled = true;
private void lnkDownloadShape_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
//this actually downloads the data and may even fire off Google Earth
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment