Skip to content

BTAA Geoportal

The Big Ten Academic Alliance (BTAA) Geoportal connects users to digital geospatial resources, including GIS datasets, web services, and digitized historical maps from multiple data clearinghouses and library catalogs. The site is solely a search tool and does not host any data.

OpenSearch

API Description: OpenSearch

OpenSearch Description: https://geo.btaa.org/catalog/opensearch.xml

RSS+XML Endpoint: https://geo.btaa.org/?format=rss

JSON Endpoint: https://geo.btaa.org/?format=json

The OpenSearch API is not officially documented by the Geoportal Documentation page.

Example: The RSS+XML and JSON endpoints operate using the same set of URL parameters used by the website interface, eg these curl commands return the same result set:

geoportal-search.sh
curl "https://geo.btaa.org/?search_field=all_fields&q=maryland"

curl "https://geo.btaa.org/?search_field=all_fields&q=maryland&format=rss"

curl "https://geo.btaa.org/?search_field=all_fields&q=maryland&format=json"

Example: geoportal-search.py

geoportal-search.py
#!/usr/bin/env python3

import urllib.request
import json

# Search BTAA Geoportal using JSON OpenSearch

ENDPOINT = 'https://geo.btaa.org/'

# Keyword query on 'Maryland'
params = {
    "search_field": "all_fields",
    "q": "maryland",
    "format": "json",
}

# https://geo.btaa.org/?search_field=all_fields&q=maryland&format=json

search_url = ENDPOINT + '?' + urllib.parse.urlencode(params)
print(search_url)
# Get search results as parsed XML
with urllib.request.urlopen(search_url) as request:
    response = json.loads(request.read())

    # Iterate over the returned items
    for item in response['data']:
        link = item['links']['self']

        if ('attributes' in item
           and 'dct_description_sm' in item['attributes']):

            title = item['attributes']['dct_description_sm']['attributes']['value']

        else:
            title = "??"

        print('----')
        print(f'Title: {title}')
        print(f'Link:  {link}')