Skip to content

Instantly share code, notes, and snippets.

View geobabbler's full-sized avatar
💭
Working

William Dollins geobabbler

💭
Working
View GitHub Profile
@geobabbler
geobabbler / IntersectDemo.cs
Created July 18, 2012 17:53
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;
@geobabbler
geobabbler / AgsTile.py
Created October 4, 2012 14:24
Additional function for MapTiler to calculate ArcGIS tile coordinates
def AgsTile(self, tx, ty, zoom):
#Converts TMS tile coordinates to ArcGIS Tile coordinates
xhex = hex(tx)
yhex = hex((2**zoom - 1) - ty)
xhex = xhex.replace("0x", "")
yhex = yhex.replace("0x", "")
xhex = "C" + xhex.zfill(8)
yhex = "R" + yhex.zfill(8)
return xhex, yhex
@geobabbler
geobabbler / point_poly.sql
Created November 2, 2012 23:05
Simple SQL Server test
DECLARE @pt geometry;
SET @pt = geometry::Point(-82.655, 42.399, 4326)
SELECT COUNT(GID) FROM lake_st_clair WHERE geom.STContains(@pt) = 1;
@geobabbler
geobabbler / spatial_trigger_sqlserver.sql
Created November 3, 2012 12:58
Example of using a trigger in SQL Server 2008 to test spatial relationship
USE [MyDB]
GO
/****** Object: Trigger [dbo].[Locations_Insert] Script Date: 11/03/2012 08:50:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/* This trigger makes sure that the data being inserted into
the Locations falls within a specific polygon stored in another table.
If it doesn't, the transaction is rolled back.
@geobabbler
geobabbler / ToGeoJSON_sample.cs
Created December 11, 2012 18:59
Snippet showing use of FGDB API extension methods
var path = Server.MapPath("/App_Data/mvc_samples.gdb");
Geodatabase gdb = Geodatabase.Open(path);
Table statesTable = gdb.OpenTable("\\us_states");
RowCollection rows = statesTable.Search("*", "STATE_NAME LIKE 'M%'", RowInstance.Recycle);
var rval = rows.ToGeoJson();
gdb.Close();
Response.ContentType = "application/json";
object result = this.Content(rval);
return result as ActionResult;
@geobabbler
geobabbler / extract_wordpress_images.py
Created December 13, 2012 21:33
Script to read Wordpress export file, fetch images via URL, and write locally.
import sys
import os
import urllib
from bs4 import BeautifulSoup
#TODO: pass in xml path and output folder as args
xml = open('C:\\Workspace\\blog\\geomusings_export.xml').read()
doc = BeautifulSoup(xml)
#attachments could technically be something other than images
@geobabbler
geobabbler / tile_inventory.py
Created January 11, 2013 17:42
Quick script to look for missing tiles in a cache.
## Copyright (c) 2013, William Dollins
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are met:
##
## Redistributions of source code must retain the above copyright notice,
## this list of conditions and the following disclaimer.
##
## Redistributions in binary form must reproduce the above copyright notice,
@geobabbler
geobabbler / tilecalc.py
Created January 21, 2013 20:43
Script for counting/totaling number of tiles with user-supplied bounds in a Google tiling scheme.
## Copyright (c) 2013, William Dollins
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are met:
##
## Redistributions of source code must retain the above copyright notice,
## this list of conditions and the following disclaimer.
##
## Redistributions in binary form must reproduce the above copyright notice,
@geobabbler
geobabbler / load_ipblocks.py
Created May 6, 2013 15:12
Script to load IP blocks from MaxMind GeoLiteCity into a PostgreSQL database.
import site
import psycopg2
import csv
conn = psycopg2.connect("dbname=mydb host=myhost user=myuser password=mypass")
cur = conn.cursor()
cr = csv.reader(open("/path/to/my.csv","rb"))
i = 0
for row in cr:
{
"vlayers": [{
"vlayer": {
"featureSources": ["feature1.json",
"feature2.json"]
}
},
{
"vlayer": {
"featureSources": ["feature3.json",