Skip to content
On this page

David Rumsey Map Collection

The class for fetching metadata and images from David Rumsey Map Collection with its LUNA API.

Usage

Create a querier for David Rumsey Map Collection:

python
from libquery import DavidRumseyMapCollection

directory = "./output/david-rumsey-map-collection"
querier = DavidRumseyMapCollection(
    metadata_dir=f"{directory}/metadata",
    img_dir=f"{directory}/imgs",
)

Query metadata:

python
base_url = "https://www.davidrumsey.com/luna/servlet/as/search?"
queries = [
    f"{base_url}q=type=chart",
    f"{base_url}q=type=diagram",
]
querier.fetch_metadata(queries=queries)

Query images:

python
querier.fetch_image()

Metadata Schema

Each metadata entry is stored as:

typescript
type Fields = 'Author' | 'Date' | 'Short Title'
    | 'Publisher' | 'Publisher Location' | 'Type'
    | 'Obj Height cm' | 'Obj Width cm' | 'Scale 1'
    | 'World Area' | 'Subject' | 'Full Title'
    | 'List No' | 'Page No' | 'Series No'
    | 'Engraver or Printer' | 'Publication Author'
    | 'Pub Date' | 'Pub Title' | 'Pub List No'
    | 'Pub Type' | 'Pub Maps'
    | 'Pub Height cm' | 'Pub Width cm'
    | 'Image No' | 'Download 1' | 'Download 2' | 'Authors'

interface SourceData {
    displayName: string
    description: string
    mediaType: string
    relayButtonUrl: string
    relayButtonTitle: string
    urlSize4?: string
    urlSize3?: string
    urlSize2: string
    urlSize1: string
    urlSize0: string
    iiifManifest: string
    id: string
    fieldValues: Record<Fields, string[]>[]
    relatedFieldValues: unknown[]
}

interface MetadataEntry {
    uuid: string
    url: string
    source: 'David Rumsey Map Collection'
    idInSource: string
    accessDate: string
    /** The query return from LUNA API. */
    sourceData: SourceData
}