update website files

* update readme
* new TopoJSON file with initial capitalised names
* add python script for merging csv and geojson
* add and update various web pages
This commit is contained in:
Hugh Rundle 2021-01-17 22:38:39 +11:00
parent 3220ba6f08
commit 95f603ef12
3 changed files with 273 additions and 0 deletions

51
about.md Normal file
View file

@ -0,0 +1,51 @@
## About Library Map
This project collects and maps data from public libraries across the Australia and the external Australian Territories of Christmas Island and the Cocos (Keeling) Islands. In the long term I hope to include more data that can be combined and cross-referenced, e.g. library funding from local and state governments, HILDA data etc.
You should be able to find the location of every public library in Australia territory, plus the standard loan period for each libary service, and whether they charge overdue fines (if known, in both cases).
Soon you will be able to see which integrated library system (ILS/LMS) each library service uses.
### Why this data?
When I worked as a systems librarian in public libraries I often wondered how the social networks of decision makers - most obviously reflected by geography and state borders - affected decision making on things like library sofware procurement. I thought mapping systems visually might reveal things that are less obvious on a simple table or list.
Rules about loan periods are arbitrary. I thought it might be interesting to see whether there are any regional trends.
Fines for overdue library books are inefficient, ineffective, perverse, and regressive. "Punishable by fine" simply means "legal for rich people". Mapping library fine regimes provides a view of any regional patterns, and also allows activists to target libraries that still charge overdue fines.
### Definitions
#### Overdue fines
A library service is classified as charging fines for overdue items if any kind of non-refundable fee is charged prior to **28 days overdue**. This period has been chosen because some libraries declare an item "lost" around that time, and invoice the borrower for a *replacement fee*. Designating these libraries as "not charging overdue fines" and others that charge e.g. a "notice fee" at the same cutoff time as "charging overdue fines" starts to get a bit weird.
#### Standard loan period
The "standard loan period" is the loan period applied to an ordinary book, and may apply to other items or indeed all items held in a library. Data for Western Australia is provisional and in some cases has been rounded to the nearest "week" (e.g. a 19 day loan period is recorded as 3 weeks).
#### Indigenous Knowledge Centre
Currently, only libraries classified as *Indigenous Knowledge Centres* by the State Library of Queensland are classified as such on this map. In future there may be other centres so identified.
### Caveats
Most of the data for the map comes from government open data sources. As such it is subject to government bias, and may be out of date or over/under sampled.
### Nomenclature
Library locations are classified into four types. In general mode these are:
* Settler Knowledge Centres
* Indigenous Knowledge Centres
* Worker Pacification Centres
* Imperial Knowledge Centres
If this naming convention makes you uncomfortable, you may view the map in *White fragility mode*, in which case the names are:
* Public Libraries
* Indigenous Knowledge Centres
* Mechanics Institutes
* National & State Libraries
I will explain a little more about why this is the case, in my talk at the GO GLAM miniconf at linuxconf.au 2021.

41
merge_service_data.py Normal file
View file

@ -0,0 +1,41 @@
#!/usr/bin/env python3
import csv
import json
from titlecase import titlecase # you need to install the titlecase package from PyPi :-)
# files to merge
geojson_file = 'data/all_library_services.geojson'
csv_file = 'data/library_services.csv'
# fields to match on
geojson_match = 'name'
csv_match = 'short_name'
# output file name
output_file = 'data/boundaries.geojson'
# open the geojson file
file = open(geojson_file, 'r')
# read the file and then load the json so it's a dict
json_data = json.loads(file.read())
# for each geojson feature, if a field in the json matches a field in the csv, add new properties to the json
for feature in json_data['features']:
with open(csv_file, newline='') as f:
# use DictReader so we can use the header names
reader = csv.DictReader(f)
for row in reader:
# look for match
if row[csv_match] == feature['properties'][geojson_match]:
# create new properties in geojson
for k in row:
feature['properties'][k] = row[k]
downcased = titlecase(feature['properties'][geojson_match]) # titlecase name
feature['properties']['name'] = downcased
# write out new geojson file with the updates
with open(output_file, 'w') as newfile:
json.dump(json_data, newfile, indent=2)

181
website/sources.html Normal file
View file

@ -0,0 +1,181 @@
!DOCTYPE html>
<html lang="en">
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>About - Library Map</title>
<link rel="shortcut icon" href="logo.svg" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<header>
<section id="title">
<a href="index.html"><img id="logo" src="logo.svg"/></a>
<h2>Sources &amp; Attributions</h2>
<p id="beta">Beta!</p>
</section>
</header>
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li>
</ul>
</nav>
<section class="info-page">
<p><em>Library Map</em> was written and conceived on unceded Wurundjeri Woi Wurrung land.</p>
<h3 id="visualisation">Visualisation</h3>
<table>
<thead>
<tr class="header">
<th>Source</th>
<th>Link</th>
<th>License</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>leaflet.js</td>
<td>https://leafletjs.com</td>
<td>BSD-2-Clause</td>
</tr>
<tr class="even">
<td>leaflet.geoCSV</td>
<td>https://github.com/joker-x/Leaflet.geoCSV</td>
<td>GPL-3.0-or-later</td>
</tr>
<tr class="odd">
<td>leaflet.pattern</td>
<td>https://github.com/teastman/Leaflet.pattern</td>
<td>BSD-2-Clause</td>
</tr>
<tr class="even">
<td>MapBox</td>
<td>https://www.mapbox.com/</td>
<td><a href="https://www.mapbox.com/legal/tos/">custom ToS</a></td>
</tr>
<tr class="odd">
<td>OpenStreetMap</td>
<td>https://www.openstreetmap.org</td>
<td>CC-BY-SA</td>
</tr>
</tbody>
</table>
<h3 id="library-services">Library services</h3>
<p>The library service boundaries are derived from local government boundary data care of PSMA and accessed from <a href="https://data.gov.au">data.gov.au</a>.</p>
<p>Data about fines and lending periods is a mix of original research, plus data provided by State Libraries and Public Libraries Victoria.</p>
<p>Data about language holdings (TODO) provided by various sources.</p>
<p>Data about Integrated Library Systems (ILS) (TODO - almost done) is mostly original research, with some data from State Library of Queensland, and some checked at Marshall Breedings <a href="http://librarytechnology.org">librarytechnology.org</a> site.</p>
<table>
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="header">
<th>Source</th>
<th>Link</th>
<th>License</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>PSMA</td>
<td>https://data.gov.au</td>
<td>CC-BY 4.0</td>
</tr>
<tr class="even">
<td>Victorian Government</td>
<td><a href="https://www.localgovernment.vic.gov.au/__data/assets/pdf_file/0032/393809/2019-Directory-of-Public-Library-Services-Victoria.pdf">Directory of Public Libraries in Victoria</a></td>
<td>© (fair dealing)</td>
</tr>
<tr class="odd">
<td>NSW Government</td>
<td><a href="https://portal.spatial.nsw.gov.au/portal/apps/sites/#/home/items/a5f3bc7668be403aa88cdf6d1f7668b9/data?geometry=113.107%2C-39.164%2C186.935%2C-26.273&amp;page=48&amp;where=buildingcomplextype%20%3E%3D%2011%20AND%20buildingcomplextype%20%3C%3D%2011">Spatial NSW</a></td>
<td>CC-BY</td>
</tr>
<tr class="even">
<td>Queensland Government (Library Service data)</td>
<td><a href="https://www.data.qld.gov.au/dataset/slq-qld-public-libraries-annual-statistics/resource/f10df735-4a8a-45d6-8db9-b2a1a4a4289d">Public Libraries Annual Statistics</a></td>
<td>CC-BY-4.0</td>
</tr>
<tr class="odd">
<td>Stat Library Queensland</td>
<td><a href="https://plconnect.slq.qld.gov.au/managing-my-library/statistics/queensland-public-libraries-statistical-bulletin">Public Libraries Statistical Bulletin</a></td>
<td>CC-BY-SA</td>
</tr>
<tr class="even">
<td>WA NSLA statistics</td>
<td>personal communication</td>
<td>© (fair dealing)</td>
</tr>
<tr class="odd">
<td>Public Library Services (DoPC South Australia)</td>
<td><a href="https://www.libraries.sa.gov.au/client/en_AU/sapubliclibraries/?rm=LOCATE+A+LIBRA0%7C%7C%7C1%7C%7C%7C0%7C%7C%7Ctrue">Find a Library</a></td>
<td>© (fair dealing)</td>
</tr>
</tbody>
</table>
<h3 id="library-locations">Library locations</h3>
<p>Library locations are generally provided by state government departments.</p>
<table>
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="header">
<th>Source</th>
<th>Link</th>
<th>License</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Libraries Tasmania / data.gov.au</td>
<td><a href="https://data.gov.au/dataset/ds-dga-409f7f64-35ef-4a70-8db1-dd737a6fabec/details?q=libraries">Libraries Tasmania locations</a></td>
<td>CC-BY 4.0</td>
</tr>
<tr class="even">
<td>Vicmap Features of Interest</td>
<td>https://discover.data.vic.gov.au/dataset/vicmap-features-of-interest</td>
<td>CC-BY 4.0</td>
</tr>
<tr class="odd">
<td>ACT Open Data Portal</td>
<td><a href="https://www.data.act.gov.au/dataset/Library-Locations-Map/3nit-7kex">ACT Libraries locations</a></td>
<td>CC-BY 4.0</td>
</tr>
<tr class="even">
<td>NSW State Library (NSW library locations and contacts)</td>
<td><a href="https://www.sl.nsw.gov.au/public-library-services/about-public-library-services/find-public-library-nsw">Public library services</a></td>
<td>© (fair dealing)</td>
</tr>
<tr class="odd">
<td>State Library of Queensland</td>
<td><a href="https://www.data.qld.gov.au/dataset/public-libraries">Queensland public libraries directory</a></td>
<td>CC-BY 4.0</td>
</tr>
<tr class="even">
<td>Find a library in the NT</td>
<td>https://nt.gov.au/leisure/arts-culture-heritage/libraries-and-records/find-a-library-in-the-nt</td>
<td>n/a</td>
</tr>
<tr class="odd">
<td>WA NSLA statistics</td>
<td>personal communication</td>
<td>© (fair dealing)</td>
</tr>
<tr class="even">
<td>Public Library Services (DoPC South Australia)</td>
<td><a href="https://www.libraries.sa.gov.au/client/en_AU/sapubliclibraries/?rm=LOCATE+A+LIBRA0%7C%7C%7C1%7C%7C%7C0%7C%7C%7Ctrue">Find a Library</a></td>
<td>© (fair dealing)</td>
</tr>
</tbody>
</table>
</section>
</body>
</html>