Skip to content

Instantly share code, notes, and snippets.

View mapmeld's full-sized avatar

Nick Doiron mapmeld

  • Yes
  • Chicago, IL
View GitHub Profile
@mapmeld
mapmeld / Geoless.py
Created September 4, 2012 02:43
Geoless: find and geolocate documents without location info on CouchDB
# Geoless.py
# Look through cases on housing database without a latitude or longitude
# Improve format of address, then assign a location from geocoder.us
import urllib2, json, re, couchdb
# load cases through JSON
geoless = urllib2.urlopen('http://nickd.iriscouch.com:5984/cases/_design/geoless/_view/geoless').read()
readresponse = json.loads(geoless)
cases = readresponse['rows']
@mapmeld
mapmeld / HouseUploader2.py
Created September 5, 2012 05:12
HouseUploader2
# load surveys without an address from KML and into CouchDB
# gets geolocation with geocoder.us
import urllib
import urllib2
import re
import couchdb # pip install couchdb
server = couchdb.client.Server(url="http://nickd.iriscouch.com:5984")
@mapmeld
mapmeld / CaseAnim.py
Created September 18, 2012 02:05
Generate timeline of cases by month inside geo region
# CaseAnim.py
# Takes in code enforcement cases with locations
# Also takes in a target neighborhood (College Hill)
# Outputs number of ongoing cases in each month
geocases = open('allcasesplusgeo.csv', 'r')
# College Hill boundary
collegehill = """-83.656990,32.825790,0.000000
-83.654442,32.825764,0.000000
@mapmeld
mapmeld / CasesToTimeline.py
Created September 19, 2012 01:49
Cases to MapBox Timeline
# CasesToTimeline.py
# prepare GeoJSON file for MapBox timeline map example
geocases = open('allcasesplusgeo.csv', 'r')
json = open('output.json', 'w')
# College Hill boundary
collegehill = """-83.656990,32.825790,0.000000
-83.654442,32.825764,0.000000
-83.653084,32.825729,0.000000
@mapmeld
mapmeld / DBTOutput.py
Created September 22, 2012 18:26
Extract Code Enforcement Photos
# extract JPG files from DBT
# "fail" messages are actually OK
thru = open('samplethru.jfif', 'r')
sc = open('insppict.DBT', 'r')
piccount = 0
maxpics = 8000
linecount = 0
headers = ""
for line in thru:
headers = headers + line
@mapmeld
mapmeld / scanmatch.py
Created September 23, 2012 17:17
Link Code Enforcement Photos to Cases
# scanmatch.py
# Connect photos to their case numbers
import os
photolist = open('photoinfo.csv', 'r')
photosbycase = { }
photonum = 0
for rawline in photolist:
@mapmeld
mapmeld / HomeStatus-SQL.txt
Created October 4, 2012 18:52
Code Enforcement on MySQL
# Sign into MySQL
mysql -u root -p
# Create a code enforcement database
CREATE DATABASE codeenf;
USE codeenf;
@mapmeld
mapmeld / SQLLoader.py
Created October 5, 2012 02:57
Code Enforcement Import: CouchDB JSON to MySQL
# SQLloader.py
# CouchDB JSON import to MySQL
import json, urllib, urllib2
j = open('propcurrent.json')
for line in j:
case = json.loads(line)
@mapmeld
mapmeld / CasePost.py
Created October 8, 2012 16:30
Geo cases to MongoDB for GeoJSON timelines
# CasePost.py
import urllib, urllib2
geocases = open('allcasesplusgeo.csv', 'r')
def halfround(dec):
return round(dec * 3, 3) / 3
# one space each from Jan 1997 to Jun 2012
cases = [ ]
@mapmeld
mapmeld / sluggify.py
Created October 11, 2012 01:33
Change OSM street names to streetslug format
# Switch name to nameslug
from PyQt4 import QtCore
activeLayer = qgis.utils.iface.activeLayer()
layerData = activeLayer.dataProvider()
columns = layerData.fields()
# how to determine column keys
for key, value in columns.items():
print str(key) + " = " + str(value.name())