Skip to content

Instantly share code, notes, and snippets.

@maxerickson
maxerickson / gist:4718499
Last active December 12, 2015 04:59
HN Collapse Old
javascript:(function(){function%20getWhen(t){parts=t.trim().split('%20');n=Number(parts[0]);if(/hour/.exec(parts[1])){n*=60;}else%20if(/day/.exec(parts[1])){n*=(60*24)}return%20n;}function%20clicker(evt){var%20t=evt.target;evt.preventDefault();p=t;while(p.tagName!='TABLE'){p=p.parentElement;}thepar=p;p=p.getElementsByClassName('comment')[0];newstate='none';cmp=function(a,b){return%20a>=b};if(p.style.display=='none'){newstate='';cmp=function(a,b){return%20a<=b};}c=document.getElementsByClassName("clicker");for(var%20i=0;i<c.length;i++){if(cmp(c[i].when,t.when)){e=c[i];while(e.tagName!='TABLE'){e=e.parentElement;}cs=e.getElementsByClassName('comment');for(var%20j=0;j<cs.length;j++){cs[j].style.display=newstate;}}}thepar.tabIndex="-1";thepar.focus();}d=document.getElementsByClassName("comhead");for(var%20i=0;i<d.length;i++){as=d[i].querySelectorAll('a');if(as){t=as[as.length-1];if(t){a=document.createElement('a');a.href='#';a.className='clicker';a.when=getWhen(t.firstChild.data);a.onclick=clicker;a.appendChild(d
@maxerickson
maxerickson / gist:7771860
Created December 3, 2013 16:05
Narrow body
javascript:(function(){document.body.style.width="35em";})();
javascript:(function(){function%20grabdepth(tbl){var%20ims=tbl.getElementsByTagName("img"),re=/s\.gif/g;for(var%20i=0;i<ims.length;i++){if(re.exec(ims[i].src)){return%20ims[i].width;}}return%20null;}function%20getComments(tr){var%20c=[];d=grabdepth(tr);cd=d+1;while(cd>d){cs=tr.getElementsByTagName("font");for(var%20i=0;i<cs.length;i++){c[c.length]=cs[i];}cs=tr.getElementsByTagName("img");re=/s\.gif/g;for(var%20i=0;i<cs.length;i++){if(!re.exec(cs[i].src)){c[c.length]=cs[i];}}tr=tr.nextSibling;if(tr){cd=grabdepth(tr);}else{cd=d;}}return%20c;}function%20clicker(evt){var%20t=evt.target;evt.preventDefault();while(t.tagName!="TABLE"){t=t.parentElement;}while(t.tagName!="TR"){t=t.parentElement;}c=getComments(t);newstate="none";if(c[0].style.display=="none"){newstate="";}for(var%20i=0;i<c.length;i++){c[i].style.display=newstate;}}d=document.getElementsByClassName("comhead");for(var%20i=0;i<d.length;i++){t=d[i].firstChild.nextSibling;if(t){a=document.createElement("a");a.href="#";a.onclick=clicker;a.innerHTML=t.data;d
javascript:(function(){var%20ps=document.getElementsByTagName("pre");for(var%20i=0;i<ps.length;i++){ps[i].style.whiteSpace="pre-wrap";ps[i].style.width="600px";}})();
@maxerickson
maxerickson / sumtags
Last active November 9, 2015 19:20
Dump keys/values from an osm xml file.
#! python3
from xml.etree import ElementTree
import collections
f="buildings-to-import.osm"
tree=ElementTree.parse(f)
root=tree.getroot()
seen=collections.defaultdict(set)
for tag in root.iter('tag'):
seen[tag.get('k')].add(tag.get('v'))
@maxerickson
maxerickson / gist:a07ed6289ab6ba355560
Last active January 21, 2016 03:38
County label helpers.
/* Checking US county label linking */
relation[type=boundary][admin_level=6][!wikipedia]{
throwWarning: tr("Missing wikipedia tag on county relation.");
}
relation[type=boundary][admin_level=6][not(JOSM_search("hasRole:label"))]{
throwWarning: tr("County relation missing label.");
}
relation[type=boundary][admin_level=6][not(JOSM_search("hasRole:admin_centre"))]{
@maxerickson
maxerickson / gist:1438ede6a5bc8282d01f
Created February 5, 2016 16:34
Match coastline with modified geometry.
node:modified < way[natural=coastline]{
throwWarning: tr("Outdated coastline source=");
fixAdd: "source=kartverket n50";
}
#! /bin/bash -x
# transform USFS tag scheme to osm tags
INFILE=$1
OUTFILE=$2
INLAYER=$(basename $INFILE)
INLAYER=${INLAYER%.*}
OUTLAYER=$(basename $OUTFILE)
OUTLAYER=${OUTLAYER%.*}
# select interesting columns, create osm fields
ogr2ogr -overwrite -sql "select 'FS ' + ID as ref, NAME as name, SYMBOL_COD as fscode, '' as highway, '' as surface from $INLAYER" -f "ESRI Shapefile" $OUTFILE $INFILE
Existing height for 261458936 125 14.0
Existing height for 261458937 107 125.0
Existing height for 261458938 110 125.0
Existing height for 261458939 46 125.0
Existing height for 261458940 121 125.0
Existing height for 261458941 121 125.0
Existing height for 261458942 110 125.0
Existing height for 261458943 114 125.0
Existing height for 261458944 118 125.0
Existing height for 261458945 23 125.0
#!/bin/python3
import json
import os
import argparse
def make_parser():
parser = argparse.ArgumentParser(description='Clean up tags.')
parser.add_argument('input', type=str,