Skip to content

Instantly share code, notes, and snippets.

View rclark's full-sized avatar

Ryan Clark rclark

View GitHub Profile
@rclark
rclark / TileLayer.Bing.js
Created March 11, 2012 16:50 — forked from pagameba/TileLayer.Bing.js
Leaflet Bing layer
L.TileLayer.Bing = L.TileLayer.extend({
supportedTypes: ['Road', 'Aerial', 'AerialWithLabels'],
attributionTemplate: '<span style="display:inline-block">' +
'<a target="_blank" href="http://www.bing.com/maps/">' +
'<img src="{logo}" /></a><br><span>{copyrights}' +
'<a style="white-space: nowrap" target="_blank" '+
'href="http://www.microsoft.com/maps/product/terms.html">' +
'Terms of Use</a></span></span>',
@rclark
rclark / compile-jade.coffee
Created December 14, 2012 02:40
Convert Jade files to JavaScript functions
fs = require 'fs'
pathutil = require 'path'
jade = require 'jade'
parseFiles = (dirname) ->
filenames = fs.readdirSync dirname
for file in filenames
continue if file.slice(0,1) is '.'
path = pathutil.join dirname, file
stats = fs.statSync pathutil.join dirname, path
@rclark
rclark / jade2js.coffee
Created December 21, 2012 17:06
Watch a directory of Jade files and write them out to JavaScript functions.
watch = require 'watch'
fs = require 'fs'
pathutil = require 'path'
jade = require 'jade'
watchDir = process.argv[2] || '.'
outFile = process.argv[3] || './templates.js'
namespace = process.argv[4] || 'Templates'
isJadeFile = (fileOrDir) ->
@rclark
rclark / owslib-metadata-mapping.json
Last active September 18, 2019 09:35
Mapping from ISO19139XML to owslib.iso:MD_Metadata
{
"identifier": "gmd:fileIdentifier/gco:CharacterString",
"parentidentifier": "gmd:parentIdentifier/gco:CharacterString",
"language": "gmd:language/gco:CharacterString",
"dataseturi": "gmd:dataSetURI/gco:CharacterString",
"languagecode": "gmd:language/gmd:LanguageCode",
"datestamp": "gmd:dateStamp/gco:Date or gmd:dateStamp/gco:DateTime",
"charset": "gmd:characterSet/gmd:MD_CharacterSetCode/@codeListValue",
"hierarchy": "gmd:hierarchyLevel/gmd:MD_ScopeCode/@codeListValue",
"contact": {
root = @
L.GeoJSON.d3 = L.GeoJSON.extend
initialize: (geojson, options) ->
@geojson = geojson # This needs to be a FeatureCollection
# unlike L.GeoJSON layer, this won't work unless GeoJSON is passed up-front
# Make sure there's an options object
options = options or {}
@rclark
rclark / L.TopoJSON.js
Last active December 7, 2022 00:23
TopoJSON-aware Leaflet layer
/*
You'll need something like this in your HTML:
<script src="http://d3js.org/topojson.v1.min.js"></script>
*/
L.TopoJSON = L.GeoJSON.extend({
addData: function(jsonData) {
if (jsonData.type === "Topology") {
for (key in jsonData.objects) {
geojson = topojson.feature(jsonData, jsonData.objects[key]);
@rclark
rclark / index.html
Last active December 18, 2015 11:59
TopoJSON was made for geologic maps.
<!DOCTYPE html>
<html lang="en" style="height:100%; width:100%; padding:0; margin:0;">
<head>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.css">
</head>
<body style="height:100%; width:100%; padding:0; margin:0;">
<div id="map" style="height:100%; width:100%; padding:0; margin:0;"></div>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script src="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.js"></script>
<script src="style.js"></script>
@rclark
rclark / L.TileLayer.GeoJSON.js
Last active December 18, 2015 16:29
Leaflet + Github-hosted vector-tiles
/* If you haven't included JSTS, it'll still work, but won't try and merge features
* across tile boundaries. You DO have to include:
* jQuery
*/
var jsts = jsts || null;
L.Cache = L.GeoJSON.extend({
mergeData: function mergeData(geojson) {
@rclark
rclark / csw_record.py
Last active December 19, 2015 02:59
CKAN + CSW code
from sqlalchemy import Column, Table, String, Text, Integer, types, ForeignKey
from sqlalchemy.orm import relationship
from ckan import model
from ckan.model import meta, Package
from shapely.geometry import asShape
import json
import logging
@rclark
rclark / L.TileLayer.EsriImageExports.js
Last active March 12, 2018 04:18
Access dynamic ESRI service layers via "export"
/* When creating a layer pass the ESRI Service's Export URL. e.g.:
* https://eia-ms.esri.com/arcgis/rest/services/20130301StateEnergyProfilesMap/MapServer/export
*/
L.TileLayer.EsriImageExports = L.TileLayer.WMS.extend({
getTileUrl: function (tilePoint) {
// Get the URL if this was just a WMS
var wmsUrl = L.TileLayer.WMS.prototype.call(this, tilePoint),
base = wmsUrl.split("?")[0],
params = wmsUrl.split("?")[1].split("&");