Sitemaps are a valuable way to index your content for web crawlers. GeoNetwork is a great tool for metadata management and a portal environment for discovery. I wanted to push out all metadata resources out as a sitemap so that content can be found by web crawlers. Python to the rescue:
Alot of tools out there have some sort of configuration which, at run time, is read and used in the process accordingly. When writing tools, my config file format has always been something like:
title: My Tool
# commented out line
description: This is my tool. # another comment
Since I’m using Python for much of my scripting these days, I decided to write a small parser to handle this type of config. So here’s what I’ve come up with:
import fileinput, re
def parse(file=None, delim=':'):
'''
Parses a config file formatted like:
foo: bar
# comments: out line
- comments allowed (#)
- empty lines allowed
- spaces allowed
'''
d = {}
if file is None:
return -1
for line in fileinput.input(file):
if not line.strip(): # skip empty or space padded lines
continue
if re.compile('^#').search(line) is not None: # skip commented lines
continue
else: # pick up key and value pairs
kvp = line.strip().split(delim)
if kvp[1].strip().split('#') is not None:
d[kvp[0].strip()] = kvp[1].split('#')[0].strip()
else:
d[kvp[0].strip()] = kvp[1].strip()
return d
Seems to work well so far. I wonder if there’s a config file standard out there?
We have some existing C modules which do a bunch of data processing, and wanted the ability to spit out shapefiles on demand. Shapelib is a C library which allows for reading and writing shapefiles and dbf files. Thanks to the APIdocs, here’s a pared down version of how to write a new point shapefile (with, in this case, one record):
< 4 hours. That’s how long it took to address a MapServer bug in WMS 1.3.0. Having been on the other side of these many times, it’s gratifying to bang out quick fixes as well.
This has seemingly been the theme for me in the last few weeks. From publishing to discovery, lack of metadata in OWS endpoints results in increased metadata management away from source, as well as crappy search results.
So here’s some friendly advice:
Service Metadata
fill out title, abstract (representative of the OWS as a whole) with descriptive metadata
fill out keywords to categorize the service. If possible, use a known thesaurus, or one specific to your organization. Don’t use keywords like “OGC”; we already know it’s an OGC service from the get-go by interacting with it
fill out contact information. OWS Common defines ServiceProvider metadata constructs, so if your organization has a service provider dishing out your OWS, they belong in this metadata. This is a contact person for the service itself, not the data
fill out Fees and AccessConstraints. If there aren’t any, use the term “None”
the OnlineResource for Service Metadata might be some website, not the URL of the service itself (we already get this from the OperationsMetadata)
Content Metadata
fill in title, abstract and keywords in the same manner as above, specific to the given Layer/FeatureType/Coverage/ObservationOffering. A title like “ROAD_1M” doesn’t cut it
your data comes with an FGDC or ISO 19115 XML document already, right? 🙂 Use MetadataURL to point to the XML document. Smart catalogues will harvest this too and associate it with the resource
WMS DataURL: if the data can be downloaded online (tgz/zip/etc.), point to it here. Or, put a pointer to an access service like WFS/WCS/SOS
WMS Layer Attribution: this provides reference to the content provider (URL, title and LogoURL). Filling in LogoURL is neat as catalogues can display this when users search for content. If possible, use an image of smaller dimensions so as to display as a thumbnail
Last but not least, bounding boxes. Whether your OWS software automagically calculates these per layer on the fly, or you can override these and set before runtime, please set spatial extents accordingly. This improves searching spatially by leaps and bounds. Don’t settle for the often used default of -180, -90, 180, 90 unless it is really a global dataset
From here, OGC Catalogues will be able to harvest your metadata and provide useful search results. For wider spread discovery, throw an OpenSearch definition in front of your CSW. Wrap your OWS endpoints in KML/GeoRSS documents (Geo Sitemaps too), and you’ll power mainstream use of your stuff.
Funeral news from newrestfunerals.co.uk said:
‘Mourners buried under a bridge for the lost’
A group of members of London’s funeral procession paid their respects to a man and his mother at the Royal Greenwich Cathedral where they lost a loved one to cancer
The two sisters and their daughter, who was buried the same night, were buried at the Royal Greenwich Cathedral, where he passed away last weekend.
Grieve: The two sisters and their daughter, who was buried the same night, were buried at the Royal Greenwich Cathedral, where he passed away last weekend
At the bottom of the stairs of the church, you can see a cemeterie. It looked like an Indian wedding feast to the first group and there were candles and flowers on the ceiling.
The funeral family were in their homes in London but only a brief family procession was in progress.
The group had gathered in a cemeterie outside the cathedral and the coffin was handed over to the funeral director.
The funeral director also handed in to the British Transport Police and they placed the coffin in a safe house at Queen’s Park, New York.
The couple went to the funeral home and their body was found on the day of the operation.
Casket search: ‘Mourners raised at arms pace’
No word on a cause of death or why they died but the couple’s family said in a statement.