#!/Library/Frameworks/Python.framework/Versions/Current/bin/python """ kmlgrid - Generate a grid pattern in KML Usage: kmlgrid [-h | -c "RGBHEX"][-w linewidth][-s scale] ul_lat ul_lon lr_lat lr_lon ny nx """ from pykml.factory import KML_ElementMaker as KML from pykml.factory import ATOM_ElementMaker as ATOM from pykml.factory import GX_ElementMaker as GX from lxml import etree import sys import getopt import os.path, os import string, re from numpy import * from pykml.parser import Schema from pykml import parser def makekml(args,dparams): stylename="sn_color_line" pointstylename="sn_point" fld=KML.Folder() [ul_lat,ul_lon,lr_lat,lr_lon,nx,ny]=[float(i) for i in args] min_lon=min(lr_lon,ul_lon) max_lon=max(lr_lon,ul_lon) min_lat=min(lr_lat,ul_lat) max_lat=max(lr_lat,ul_lat) dx=(max_lon-min_lon)/nx dy=(max_lat-min_lat)/ny for x in arange(min_lon,max_lon+(dx/2.),dx): line=KML.Placemark( KML.name("Parallel {0}-0".format(x)), KML.styleUrl('#{0}'.format(stylename)), KML.LineString( KML.altitudeMode("clampToGround"), KML.coordinates( "{0},{1},{2}\n".format(x,min_lat,0), "{0},{1},{2}".format(x,max_lat,0) ), ), ) fld.append(line) for y in arange(min_lat,max_lat+(dy/2.),dy): line=KML.Placemark( KML.name("Meridian 0-{0}".format(y)), KML.styleUrl('#{0}'.format(stylename)), KML.LineString( KML.altitudeMode("clampToGround"), KML.coordinates( "{0},{1},{2}\n".format(min_lon,y,0), "{0},{1},{2}".format(max_lon,y,0) ), ), ) fld.append(line) i=0 for x in arange(min_lon,max_lon+(dx/2.),dx): for y in arange(min_lat,max_lat+(dy/2.),dy): i=i+1 point=KML.Placemark( KML.styleUrl("#{0}".format(pointstylename)), KML.ExtendedData( KML.Data( KML.value("Point {0}".format(i)), name="point_number", ), ), KML.Point( KML.coordinates( "{0},{1},{2}\n".format(x,y,0) ), ), ) fld.append(point) stl=KML.Style( KML.LineStyle( KML.color("{0}".format(dparams['color'])), KML.width("{0}".format(dparams['width'])), ), id=stylename, ) pstl=KML.Style( KML.IconStyle( KML.color("{0}".format(dparams['color'])), KML.scale(dparams['symbol-scale']), KML.Icon( KML.href(dparams['symbol']), ), ), KML.BalloonStyle( KML.text('