Repository navigation
Fill 678 missing city values, each cross-verified and sourced - #232
Conversation
Populates the `city` field for 719 of the 853 entries that have an IATA code
but no city. Only previously-blank fields are touched; no existing value is
modified.
Method
------
Three independent open datasets were combined, then every value was verified
individually against a primary source:
* Wikidata P931 "place served by transport hub" (CC0) - the property whose
meaning matches this field exactly
* OurAirports `municipality` (public domain)
* GeoNames gazetteer (CC BY 4.0), used to confirm each candidate name is a
real settlement near the airport's own coordinates
96% of the values are backed by an English Wikipedia article, the rest by
Wikidata or an operator/government source. Every value carries a verbatim
supporting quote and a source URL in an audit trail.
`city` is taken to mean the place an airport *serves*, not the municipality
containing the runway - the two differ often (Rostock-Laage serves Rostock,
not Laage) and this dataset consistently wants the former.
Values follow the file's existing conventions: ASCII with diacritics stripped
(Svolvaer, not Svolvær), and the common English name where one exists.
Not filled
----------
127 entries are deliberately left blank rather than guessed. Most are remote
Australian pastoral stations and mine sites that serve no settlement, plus a
few airstrips documented only by directory sites that republish these same
open datasets - citing those would be circular, not verification.
|
Hi @alexander-san, when you have time, could you take a look at this PR? |
|
First of big thanks and this huge PR took a moment to review. Three things I'd like changed @thomasgobinfcmlabs before merge. All of them are cases where the PR's own stated rules point somewhere other than the value that landed. 1. The pastoral-station / mine-site exclusion is applied to about half the category. The description says ~96 remote stations and mine sites were deliberately left blank, naming Delta Downs, Durham Downs and Mount Keith. But of the 14 Australian
The audit notes concede the exclusion criterion is met on many of these — "no town center" ( Either rule is defensible; what I'd like is one rule. Since the description already commits to leaving these blank, blanking the ~29 is the smaller change and keeps the PR's stated policy true. 2. The audit's evidence field is "It is served from Cairns by Hinterland Aviation" — that makes Cairns the origin of the service, not the place the airport serves. Wikipedia's infobox gives 3. The audit is transparent here, citing "OIBH": { "iata": "IAQ", "name": "Bastak Airport", "city": "Emam Hasan",
"state": "Hormozgan", "lat": 27.2127, "lon": 54.3186 }a row whose city is 490 km from its own coordinates and in a different province than its own |
|
Thanks for going through it in that much detail. All three are done. Counts go from 719 filled / 134 blank to 678 / 175. Every ICAO that went back to blank is listed below, so the audit table I attached earlier still lines up once you drop those 41 rows. Happy to upload a regenerated one if that's easier. It's a follow-up commit rather than a force-push, so your comments stay where you put them. 1. Stations and mine sitesRather than work from the 29, I re-derived the category. Every Australian filled row got checked against its GeoNames feature code, then anything ambiguous against Wikipedia. The rule:
That gives 39 rows, ten more than your estimate. Stations and homesteads (31): YABI, YADS, YAGD, YAMM, YANL, YARY, YAUS, YAUV, YBDF, YBLC, YBRU, YBWM, YCWY, YDRD, YGIB, YGLE, YHBY, YHDY, YIKM, YKCS, YLAH, YMNY, YMUP, YMWT, YMWX, YMYR, YMYT, YRYH, YSPV, YWDL, YWMP. Two of those need a word of explanation. Balcanoona (YBLC) is a former pastoral station that now serves as the headquarters for Vulkathunha-Gammon Ranges National Park. Lawn Hill (YLAH) is a gazetted locality with 63 people at the 2021 census, but the airstrip sits at the Lawn Hill homestead, which Wikipedia lists as one of several homesteads inside that locality. Mines, gas and industrial (5): YBRY (Barimunya, next to the Yandi mine), YLLE (Ballera gas plant), YOOM (Moomba, Santos' restricted-access gas facility), YTMO (Phosphate Hill), YWIT (Wittenoom). Wittenoom is the odd one there, since it was a town rather than a mine site. It was degazetted in 2007, the 2021 census recorded nobody living there, and the airport closed back in 1993, so I've treated it as a mine site whose town is gone. Resorts and a landform (3): YCOO (Cooinda lodge in Kakadu), YKCA (Kings Canyon resort in Watarrka National Park), YTST (Anjo Peninsula). YLZI is the same case, but it's under point 2 below since you raised it separately. YMMI to Leonora stays, as you asked. Two of the ten extra rows are really your point rather than mine. YKCS and YKCA were both filled as Petermann, which is the containing locality, so P131 semantics, when the description commits to P931 "place served" over P131. YKCS is the Kings Creek Station airstrip, so it sits with the stations, and it's 35 km from Petermann anyway. YKCA serves the Kings Canyon resort, so it sits with the resorts. Your list of 14 There are still eight Australian rows with Downs, Station or Mine in the airport name that carry a city: YCOD, YEVA, YGDN, YGRM, YKIR, YMHU, YMUC, YNUD (seven of them with an IATA code). All eight already had those values on Three I kept that you might want blank tooEach is a named settlement rather than a station, mine or resort, which is the only reason it survived the rule. All three have little or no recorded population, so I'd rather flag them than quietly keep them:
Happy to blank any or all of them. For contrast, the small Australian ones I'm confident about: YLRA Laura (133 at the 2021 census), YGNV Greenvale (192), YBIL Billiluna (150 at 2016). Those are towns and communities rather than stations. 2. YLZIAgreed, and good catch. The evidence names where the service flies from, not what the airport serves. Blanked. 3. OIBHAgreed. Blanked, so the row is back to being self-consistently Bastak: I'll open a separate issue for the OIBH / OI20 / IAQ conflict covering name, state, lat and lon, unless you'd rather raise it yourself. ChecksAgainst
|
|
Would be much appreciated @thomasgobinfcmlabs |
Fills the
cityfield for 678 of the 853 entries that have an IATA code but no city.Only previously-blank fields are touched — no existing value is modified, and no other field changes. The diff is 678 lines in
airports.json.Method
Nothing here comes from guesswork or from a model's memory. Three independent open datasets were combined to generate candidates, then every value was verified individually against a primary source:
municipality661 of the 678 values (97%) are backed by an English Wikipedia article, the remainder by Wikidata or an operator/government source. Every value has a verbatim supporting quote and a source URL recorded; happy to attach the full audit table if useful.
What
citywas taken to meanThe place an airport serves, not the municipality containing the runway. These differ often, and the existing data consistently prefers the former — so Rostock-Laage Airport gives
Rostock, not Laage. Wikidata's P931 encodes exactly this, which is why it was weighted above P131 (located in the administrative territorial entity).House style
Matched to the existing file rather than assumed:
Bodø→Bodo,Arnavutköy→Arnavutkoy), soSvolvær→Svolvaer.Munich,Cologne).indent=4, sorted by ICAO — byte-identical to what.github/scripts/sort.pyproduces, so the sort workflow is a no-op on merge..github/scripts/valid_json.pypasses.Deliberately left blank
175 entries are not filled, rather than guessed:
Two further entries were dropped late for citing an article about a different airport, and a small number for resting on aggregator sources. Accuracy was prioritised over coverage throughout.
Sample
Changes after review
After @alexander-san's review, 41 values went back to blank. Filled drops from 719 to 678, blank rises from 134 to 175.
YMMItoLeonorastays.YLZILizard Island, where the evidence named where the service flies from rather than the place the airport serves.OIBH, where theOIBH/OI20/IAQidentity conflict also affectsname,state,latandlon. That needs its own issue rather than a city-fill PR.