Summary
For places in Türkiye, addresses[1].region cannot be used to answer "which province is this place in". It is null on 92.3% of records, and where present it mixes plate codes, province names in several casings, the country name and a handful of ISO codes. We ended up assigning province by point-in-polygon against division_area instead, which works, but most consumers will reach for the address field first.
Release and scope
- Release:
2026-07-22.0, theme places, type place
- Filter: bounding box
xmin 25.5..45.0, ymin 35.7..42.3 and addresses[1].country = 'TR'
- Records: 1,786,685
Numbers
| Measure |
Count |
Share |
addresses[1].region IS NULL |
1,649,580 |
92.3% |
region in ISO 3166-2 form (TR-xx) |
31 |
0.002% |
region present, any form |
137,105 |
7.7% |
The 25 most frequent non-null values, which show the mix of conventions:
('07', 12244) plate code, Antalya
('06', 11307) plate code, Ankara
('İstanbul', 10649)
('16', 8462) plate code, Bursa
('42', 5476) plate code, Konya
('01', 4558)
('41', 4299)
('09', 4251)
('Ankara', 4129)
('Türkiye', 3852) the country, not a region
('İzmir', 3665)
('20', 3110)
('İSTANBUL', 2822)
('Istanbul', 2657)
('Bursa', 2362)
('Antalya', 2352)
('34', 2142) plate code, İstanbul
('Konya', 1490)
('Muğla', 1214)
('Kocaeli', 1207)
('İZMİR', 917)
('ANKARA', 910)
('Adana', 910)
('Mersin', 880)
('Gaziantep', 758)
So İstanbul alone appears as İstanbul, İSTANBUL, Istanbul and 34, and Antalya as Antalya and 07.
Reproduce
INSTALL httpfs; LOAD httpfs; SET s3_region='us-west-2';
SELECT
count(*) AS total,
count(*) FILTER (WHERE addresses[1].region IS NULL) AS region_null,
count(*) FILTER (WHERE addresses[1].region LIKE 'TR-%') AS region_iso
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-07-22.0/theme=places/type=place/*', hive_partitioning=1)
WHERE bbox.xmin BETWEEN 25.5 AND 45.0 AND bbox.ymin BETWEEN 35.7 AND 42.3
AND addresses[1].country = 'TR';
SELECT addresses[1].region AS region, count(*) c
FROM read_parquet('s3://overturemaps-us-west-2/release/2026-07-22.0/theme=places/type=place/*', hive_partitioning=1)
WHERE bbox.xmin BETWEEN 25.5 AND 45.0 AND bbox.ymin BETWEEN 35.7 AND 42.3
AND addresses[1].country = 'TR' AND addresses[1].region IS NOT NULL
GROUP BY 1 ORDER BY c DESC LIMIT 25;
What would help
The schema documents region as the ISO 3166-2 subdivision code, which for Türkiye maps 1:1 to the two-digit plate code (TR-34 = İstanbul = plate 34). Normalising the values that are already there (plate code or province name in any casing) to TR-xx would recover a usable field for the 7.7%, and if the source pipeline can derive it from coordinates the way consumers have to today, the 92.3% too.
Workaround we use, in case it helps others: division_area with subtype = 'region', country = 'TR' and class = 'land' gives exactly the 81 provinces; a per-province ST_Within loop over a locally materialised extract assigns every record. Notes on that, including why the join has to be done locally rather than against S3, are written up here: https://pinlyx.com/research/turkey-business-digital-report
Related: a second, separate observation about listed versus reachable websites values will follow as its own issue.
Summary
For places in Türkiye,
addresses[1].regioncannot be used to answer "which province is this place in". It is null on 92.3% of records, and where present it mixes plate codes, province names in several casings, the country name and a handful of ISO codes. We ended up assigning province by point-in-polygon againstdivision_areainstead, which works, but most consumers will reach for the address field first.Release and scope
2026-07-22.0, themeplaces, typeplacexmin 25.5..45.0,ymin 35.7..42.3andaddresses[1].country = 'TR'Numbers
addresses[1].region IS NULLregionin ISO 3166-2 form (TR-xx)regionpresent, any formThe 25 most frequent non-null values, which show the mix of conventions:
So İstanbul alone appears as
İstanbul,İSTANBUL,Istanbuland34, and Antalya asAntalyaand07.Reproduce
What would help
The schema documents
regionas the ISO 3166-2 subdivision code, which for Türkiye maps 1:1 to the two-digit plate code (TR-34= İstanbul = plate 34). Normalising the values that are already there (plate code or province name in any casing) toTR-xxwould recover a usable field for the 7.7%, and if the source pipeline can derive it from coordinates the way consumers have to today, the 92.3% too.Workaround we use, in case it helps others:
division_areawithsubtype = 'region',country = 'TR'andclass = 'land'gives exactly the 81 provinces; a per-provinceST_Withinloop over a locally materialised extract assigns every record. Notes on that, including why the join has to be done locally rather than against S3, are written up here: https://pinlyx.com/research/turkey-business-digital-reportRelated: a second, separate observation about listed versus reachable
websitesvalues will follow as its own issue.