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}')