Created
July 18, 2012 17:53
-
-
Save geobabbler/3137738 to your computer and use it in GitHub Desktop.
Windows form showing the use of GeoIQ4Net to call analysis functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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("http://geocommons.com", "username", "password"); //wrapper class for GeoIQ analytic methods | |
public IntersectDemo() | |
{ | |
InitializeComponent(); | |
//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.Clear(); | |
this.lnkDownloadShape.Links.Add(19, 18, "http://geocommons.com/overlays/" + _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 | |
System.Diagnostics.Process.Start(e.Link.LinkData.ToString()); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment