opentraveldata / opentraveldata

Collection of open data related to (at least) travel, transport, tourism
https://opentraveldata.github.io/opentraveldata/
231 stars 98 forks source link

Geographical issues #139

Open MrMey opened 4 years ago

MrMey commented 4 years ago

Hello, I wrote a small script to compare optd_por_public.csv and the content of timezone-boundary-builder to look originally for invalid timezone allocations.

I used:

This is still experimental - so feel free to comment. This is an idea to extend the quality tests you mentioned - maybe raise errors when timezones are different between the different sources.

My code ``` from timezonefinder import TimezoneFinder from neobase import NeoBase from datetime import datetime import pytz neo = NeoBase() #  will use neo_ to designate neobase data tf = TimezoneFinder() #  will use tf_ to designate timefinder data REF_TIME = datetime.now() utc_now = pytz.utc.localize(REF_TIME) count = 0 for entry in neo._data.values(): iata = entry.get('iata_code') neo_tz = entry.get('timezone', None) lng, lat = float(entry.get('lng')), float(entry.get('lat')) tf_tz = tf.timezone_at(lng=lng, lat=lat) if neo_tz is None: print( '{airport},{lng},{lat},{neo_tz},{tf_tz},,'.format( airport=iata, lng=lng, lat=lat, neo_tz=neo_tz, tf_tz=tf_tz ) ) elif tf_tz is None: continue #   let's ignore the case when timezonebuilder could not find the data elif neo_tz != tf_tz: neo_local = pytz.timezone(neo_tz).localize(REF_TIME) tf_local = pytz.timezone(tf_tz).localize(REF_TIME) if tf_local is None: tf_utcoffset = 'not_found' else: tf_utcoffset = (utc_now - tf_local).total_seconds() / 3600 if neo_local is None: neo_utcoffset = 'not_found' else: neo_utcoffset = (utc_now - neo_local).total_seconds() / 3600 if neo_utcoffset != tf_utcoffset: print( '{airport},{lng},{lat},{neo_tz},{tf_tz},{neo_offset},{tz_offset}'.format( airport=iata, lng=lng, lat=lat, neo_tz=neo_tz, tf_tz=tf_tz, neo_offset=neo_utcoffset, tz_offset=tf_utcoffset ) ) count += 1 print('found %i discrepancies' % count) ```

I found the following 151 discrepancies :

Results ``` | Iata_code | lat | lng | opentraveldata tz | timezonefinder tz | opentraveldata utcoffset | timezonefinder offset | |-----------|-------------|------------|----------------------|----------------------|--------------------------|-----------------------| | AAT | 88.08738 | 47.75223 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | AAT | 88.13361 | 47.84864 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | AJU | -37.070333 | -10.984 | America/Noronha | America/Maceio | -2.0 | -3.0 | | AKT | 32.987861 | 34.590416 | Europe/London | Asia/Nicosia | 0.0 | 2.0 | | AKU | 80.2917 | 41.2625 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | AKU | 80.26444 | 41.12306 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | ATM | -52.253978 | -3.253906 | America/Manaus | America/Santarem | -4.0 | -3.0 | | BAN | 20.33 | -4.167 | Africa/Lubumbashi | Africa/Kinshasa | 2.0 | 1.0 | | BOQ | 155.2 | -6.267 | Pacific/Port_Moresby | Pacific/Bougainville | 10.0 | 11.0 | | BPL | 82.3003 | 44.8954 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | BPL | 82.06993 | 44.89334 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | BPL | 82.56981 | 45.17018 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | BTW | 115.995 | -3.41241 | Asia/Jakarta | Asia/Makassar | 7.0 | 8.0 | | BVV | 147.61861 | 44.92248 | Asia/Sakhalin | Asia/Ust-Nera | 11.0 | 10.0 | | BVV | 147.62873 | 44.92437 | Asia/Sakhalin | Asia/Ust-Nera | 11.0 | 10.0 | | BXY | 63.21379 | 45.62352 | Asia/Qostanay | Asia/Qyzylorda | 6.0 | 5.0 | | CTM | -88.32685 | 18.50467 | America/Merida | America/Cancun | -6.0 | -5.0 | | DEE | 145.68455 | 43.96119 | Asia/Sakhalin | Asia/Ust-Nera | 11.0 | 10.0 | | DEE | 145.86146 | 44.02734 | Asia/Sakhalin | Asia/Ust-Nera | 11.0 | 10.0 | | DEE | 145.87535 | 44.14927 | Asia/Sakhalin | Asia/Ust-Nera | 11.0 | 10.0 | | DLB | 118.8 | -8.45 | Pacific/Port_Moresby | Asia/Makassar | 10.0 | 8.0 | | DNH | 94.8092 | 40.1611 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | DNH | 94.68333 | 40.16667 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | EED | -114.6 | 34.85 | America/Los_Angeles | America/Phoenix | -8.0 | -7.0 | | ENT | 162.32802 | 11.3415 | Pacific/Pohnpei | Pacific/Majuro | 11.0 | 12.0 | | ERN | -69.8798 | -6.63953 | America/Manaus | America/Eirunepe | -4.0 | -5.0 | | FYN | 89.50793 | 46.80194 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | FYN | 89.52115 | 46.9919 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | GAM | -171.74111 | 63.77972 | America/Adak | America/Nome | -10.0 | -9.0 | | HMI | 93.66909 | 42.84098 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | HMI | 93.50601 | 42.83393 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | HTN | 79.86493 | 37.03852 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | HTN | 79.92694 | 37.09972 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | IKO | -168.84956 | 52.94158 | America/Adak | America/Nome | -10.0 | -9.0 | | IQM | 85.5328 | 38.1494 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | IQM | 85.51217 | 38.1687 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | ISQ | -88.25 | 45.95 | America/Detroit | America/Chicago | -5.0 | -6.0 | | ITB | -56.000669 | -4.242342 | America/Manaus | America/Santarem | -4.0 | -3.0 | | ITU | 147.95425 | 45.25688 | Asia/Magadan | Asia/Ust-Nera | 11.0 | 10.0 | | ITU | 147.81555 | 45.10261 | Asia/Sakhalin | Asia/Ust-Nera | 11.0 | 10.0 | | JCR | -57.776869 | -6.233156 | America/Manaus | America/Santarem | -4.0 | -3.0 | | KCA | 82.9869 | 41.7181 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KCA | 82.93639 | 41.72778 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KCN | -167.54964 | 53.40351 | America/Adak | America/Nome | -10.0 | -9.0 | | KCN | -167.55524 | 53.40037 | America/Adak | America/Nome | -10.0 | -9.0 | | KDY | 136.84227 | 62.78614 | Asia/Vladivostok | Asia/Khandyga | 10.0 | 9.0 | | KDY | 136.80886 | 62.78487 | Asia/Vladivostok | Asia/Khandyga | 10.0 | 9.0 | | KDY | 135.5667 | 62.65334 | Asia/Vladivostok | Asia/Khandyga | 10.0 | 9.0 | | KHE | 32.5064 | 46.6758 | Europe/Simferopol | Europe/Kiev | 3.0 | 2.0 | | KHG | 76.01996 | 39.54292 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KHG | 75.97972 | 39.45472 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KJI | 87.0 | 48.22 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KJI | 86.86375 | 47.70283 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KLI | 21.75 | -4.167 | Africa/Kinshasa | Africa/Lubumbashi | 1.0 | 2.0 | | KRL | 86.15 | 41.73 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KRL | 86.14694 | 41.75972 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KRY | 84.88 | 45.62 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KRY | 84.88 | 45.62 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | KWD | 23.23 | -8.0 | Africa/Bangui | Africa/Lubumbashi | 1.0 | 2.0 | | KWV | 155.3 | -6.183 | Pacific/Port_Moresby | Pacific/Bougainville | 10.0 | 11.0 | | KYY | 84.86763 | 45.59023 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | MFP | 138.0 | -22.1 | Australia/Darwin | Australia/Brisbane | 9.5 | 10.0 | | MIO | -110.9 | 33.4 | America/Chicago | America/Phoenix | -6.0 | -7.0 | | MPT | 125.0 | -8.167 | Asia/Dili | Asia/Makassar | 9.0 | 8.0 | | MVI | 155.3 | -6.0 | Pacific/Port_Moresby | Pacific/Bougainville | 10.0 | 11.0 | | MXA | -109.7 | 40.98 | America/Chicago | America/Denver | -6.0 | -7.0 | | NCR | -79.95 | 8.483 | America/Managua | America/Panama | -6.0 | -5.0 | | NHV | -140.229 | -8.7956 | Pacific/Tahiti | Pacific/Marquesas | -10.0 | -9.5 | | NLT | 83.38 | 43.43 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | NLT | 83.24959 | 43.42649 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | OBA | 139.0 | -21.23 | Australia/Sydney | Australia/Brisbane | 11.0 | 10.0 | | ODS | 30.676464 | 46.426767 | Europe/Simferopol | Europe/Kiev | 3.0 | 2.0 | | OHC | -168.83171 | 63.27226 | America/Adak | America/Nome | -10.0 | -9.0 | | OKT | 53.3883 | 54.44 | Asia/Yekaterinburg | Europe/Moscow | 5.0 | 3.0 | | PBB | -41.731961 | -2.893747 | America/Campo_Grande | America/Fortaleza | -4.0 | -3.0 | | PPY | -55.13 | -22.28 | America/Sao_Paulo | America/Campo_Grande | -3.0 | -4.0 | | QGX | 2.55 | 37.1167 | Africa/Cairo | Africa/Algiers | 2.0 | 1.0 | | QHW | 91.0 | 41.0 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | QIK | -3.43333 | 6.45 | Africa/Lagos | Africa/Abidjan | 1.0 | 0.0 | | QKX | 23.7 | 63.98 | Europe/Oslo | Europe/Helsinki | 1.0 | 2.0 | | QSG | 130.302222 | 33.149722 | Europe/Copenhagen | Asia/Tokyo | 1.0 | 9.0 | | QSZ | 77.07029 | 38.27902 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | QSZ | 77.24056 | 38.41667 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | QYA | 114.4 | 36.02 | Asia/Seoul | Asia/Shanghai | 9.0 | 8.0 | | QYB | -3.38333 | 6.5 | Africa/Lagos | Africa/Abidjan | 1.0 | 0.0 | | RAW | 155.56984 | -6.22196 | Pacific/Port_Moresby | Pacific/Bougainville | 10.0 | 11.0 | | RKW | -84.68 | 35.92 | America/Chicago | America/New_York | -6.0 | -5.0 | | RQA | 88.00838 | 38.9747 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | RQA | 88.16465 | 39.02003 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | RUG | 129.7 | 32.38 | Asia/Shanghai | Asia/Tokyo | 8.0 | 9.0 | | SHF | 85.89055 | 44.2421 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | SHF | 86.03694 | 44.3023 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | SKM | -57.13333 | 5.88333 | America/Guyana | America/Paramaribo | -4.0 | -3.0 | | SNP | -170.22991 | 57.15811 | America/Adak | America/Nome | -10.0 | -9.0 | | SNP | -170.27092 | 57.18539 | America/Adak | America/Nome | -10.0 | -9.0 | | STG | -169.66302 | 56.57766 | America/Adak | America/Nome | -10.0 | -9.0 | | STG | -169.58333 | 56.58333 | America/Adak | America/Nome | -10.0 | -9.0 | | STM | -54.79279 | -2.42243 | America/Manaus | America/Santarem | -4.0 | -3.0 | | SVA | -170.47889 | 63.69417 | America/Adak | America/Nome | -10.0 | -9.0 | | SXJ | 90.2475 | 42.9117 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | SXJ | 90.6423 | 42.2914 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | TBT | -69.93583 | -4.25567 | America/Porto_Velho | America/Eirunepe | -4.0 | -5.0 | | TCG | 83.3408 | 46.6725 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | TCG | 82.95847 | 46.74535 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | TJG | 115.4 | -2.217 | Asia/Jakarta | Asia/Makassar | 7.0 | 8.0 | | TLP | 141.0 | -4.783 | Pacific/Port_Moresby | Asia/Jayapura | 10.0 | 9.0 | | TLQ | 89.0972 | 43.0303 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | TLQ | 89.16667 | 42.93333 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | TOK | 155.06224 | -6.20114 | Pacific/Port_Moresby | Pacific/Bougainville | 10.0 | 11.0 | | TWC | 78.98994 | 39.88064 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | TWC | 79.06118 | 39.86984 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | TYP | 138.0 | -22.28 | Australia/Darwin | Australia/Brisbane | 9.5 | 10.0 | | UAH | -139.55 | -8.9 | Pacific/Gambier | Pacific/Marquesas | -9.0 | -9.5 | | UKS | 33.5224 | 44.58883 | Europe/Zaporozhye | Europe/Simferopol | 2.0 | 3.0 | | UMS | 134.4488 | 60.36391 | Asia/Vladivostok | Asia/Khandyga | 10.0 | 9.0 | | UMS | 134.54405 | 60.41554 | Asia/Vladivostok | Asia/Khandyga | 10.0 | 9.0 | | URC | 87.47424 | 43.90711 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | URC | 87.60046 | 43.80096 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | URC | 87.48333 | 43.88333 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | USR | 143.11083 | 64.54933 | Asia/Magadan | Asia/Ust-Nera | 11.0 | 10.0 | | USR | 143.237 | 64.56968 | Asia/Magadan | Asia/Ust-Nera | 11.0 | 10.0 | | WKN | 155.22081 | -5.8613 | Pacific/Port_Moresby | Pacific/Bougainville | 10.0 | 11.0 | | WKN | 155.20961 | -5.87005 | Pacific/Port_Moresby | Pacific/Bougainville | 10.0 | 11.0 | | XEM | -65.87 | 48.2 | America/Moncton | America/Toronto | -4.0 | -5.0 | | XLP | -66.97 | 47.98 | America/Moncton | America/Toronto | -4.0 | -5.0 | | XON | -66.17 | 48.13 | America/Moncton | America/Toronto | -4.0 | -5.0 | | XOT | -4.417 | 48.45 | America/Guadeloupe | Europe/Paris | -4.0 | 1.0 | | YBI | -55.78537 | 53.46908 | America/St_Johns | America/Goose_Bay | -3.5 | -4.0 | | YBI | -55.78772 | 53.46864 | America/St_Johns | America/Goose_Bay | -3.5 | -4.0 | | YDE | -57.2313 | 53.42685 | America/St_Johns | America/Goose_Bay | -3.5 | -4.0 | | YIN | 81.32865 | 43.95507 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | YIN | 81.51804 | 43.97799 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | ZBB | -123.012222 | 49.074167 | Europe/Copenhagen | America/Vancouver | 1.0 | -8.0 | | ZHA | 110.35848 | 21.21446 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | ZHA | 110.34271 | 21.28145 | Asia/Urumqi | Asia/Shanghai | 6.0 | 8.0 | | ZKG | -61.26577 | 50.1958 | America/Blanc-Sablon | America/Toronto | -4.0 | -5.0 | | ZKG | -61.27098 | 50.18374 | America/Blanc-Sablon | America/Toronto | -4.0 | -5.0 | | ZNL | -117.300556 | 49.494167 | Europe/Berlin | America/Vancouver | 1.0 | -8.0 | | ZNM | -7.13333 | 51.6 | Europe/Berlin | Europe/Dublin | 1.0 | 0.0 | | ZNY | -9.75 | 52.4333 | Europe/Berlin | Europe/Dublin | 1.0 | 0.0 | | ZOH | 175.387808 | -40.206039 | Europe/Berlin | Pacific/Auckland | 1.0 | 13.0 | | ZOJ | -7.1 | 51.6333 | Europe/Berlin | Europe/Dublin | 1.0 | 0.0 | | ZOW | -7.06667 | 52.4333 | Europe/Berlin | Europe/Dublin | 1.0 | 0.0 | | ZQD | -9.48333 | 53.5833 | Europe/Berlin | Europe/Dublin | 1.0 | 0.0 | | ZQM | 44.0833 | -22.5167 | Europe/Berlin | Indian/Antananarivo | 1.0 | 3.0 | | ZQP | -6.61667 | 51.65 | Europe/Berlin | Europe/Dublin | 1.0 | 0.0 | | ZQT | -10.55 | 52.1667 | Europe/Berlin | Europe/Dublin | 1.0 | 0.0 | | ZSZ | 7.65 | 46.68 | Africa/Windhoek | Europe/Zurich | 2.0 | 1.0 | | ZVL | -113.854444 | 53.6675 | Europe/Amsterdam | America/Edmonton | 1.0 | -7.0 | | ZWC | 50.73 | 58.97 | Europe/Oslo | Europe/Kirov | 1.0 | 3.0 | | ZXZ | 25.42 | 55.47 | Asia/Dubai | Europe/Vilnius | 4.0 | 2.0 | found 151 discrepancies ```

Note : I did not deduplicate the airport entries. I investigated some of them (looking first at big discrepancies):

Timezone allocation issue:

Railway stations incorrect coordinates

There seems to be a pattern here, all the coordinates are false.

Issue : cannot find entries, could not google it, iata it... smells weird:

China Xinjiang

The rest

Among the rest most of them are places incorrectly placed to the neighboring time zone, like:

I hope this can help, Bests Romain

MrMey commented 4 years ago

Small addition : as the timezone-boundary-builder is based on area approximation it may lead to some very local inconsistencies for example : | QKX | 23.7 | 63.98 | Europe/Oslo | Europe/Helsinki | 1.0 | 2.0 | While QKX is really in Norway and is really at Europe/Oslo tz but as it is just 20km from the border, I fear it was wrongly attached to Sweden. So we should be cautious with the data.

da115115 commented 4 years ago

Big big thanks, Romain, that is indeed very helpful!

Yes, your checker would definitely need its way to the OPTD quality monitoring checkers.

Wrt NeoBase, I cannot remember right now if we can specify alternate OPTD data files: we should be sure that NeoBase takes the latest version of the OPTD data sets, which the above-mentioned checkers all do (through some straightforward logic).

In parallel, we can work on solving all those time-zone issues. So, I guess that this issue will be kept open for a while.

Wrt Urumqi:

Xinjiang Time (Chinese: 新疆时间; pinyin: Xīnjiāng shíjiān), also known as Ürümqi Time (Chinese: 乌鲁木齐时间; pinyin: Wūlǔmùqí Shíjiān), is set due to its geographical location in the westernmost part of China. The time offset is UTC+06:00 which is two hours behind Beijing, and is shared with Kyrgyzstan and most of Kazakhstan. It is one of the two time standards, together with Beijing Time, being used in parallel in Xinjiang, China.

Usage

Currently, the timezone used within Xinjiang is roughly split along the ethnic divide, with most ethnic Han population in the area following Beijing Time, and most ethnic Uyghur population as well as population of some other ethnics in the area following Xinjiang Time. Some local authorities are now using both time standards side by side. The coexistence of two timezones within same region has caused some confusion among local population especially when interracial communications occur, and whenever a time is mentioned, it is necessary to either explicitly make clear whether the time is Xinjiang Time or Beijing Time, or convert the time according to ethnicity of the target you are speaking to, in order to avoid confusion between the two time standards. The double time standard is particularly observable in Xinjiang Television, which schedules its Chinese channel according to Beijing Time and its Uyghur and Kazakh channels according to Xinjiang Time. Some ethnic Han population in Xinjiang might not be aware of the existence of the UTC+06:00 Xinjiang Time because of the language barrier.

For Xinjiang population who are using Beijing Time instead of Xinjiang Time, they would schedule their activities two hours after ordinary time those daily activities are done in Eastern China to match the sunrise/sunset time, this is known as the work/rest time in Xinjiang, which is also referred to as Xinjiang Time or time difference between Xinjiang and mainland China.

In 2014, Apple Inc. released an update to its iOS mobile operating system, which silently changed the default time for users in Xinjiang into Xinjiang Time. As some users in the area were using Beijing Time in their iOS before the update and set the alarm of their phones and tablets according to Beijing Time, the silent change caused some alarms to ring at a time later than expected, causing disruption in daily activity on the day after the changes.

In 2018, according to Human Rights Watch, a Uyghur man was arrested and sent to a detention center because he set his watch to Xinjiang Time.

IANA time zone database

The territory utilizing the Xinjiang Time is covered in the IANA time zone database by the following zones.

Columns marked with * are from the file zone.tab of the database.

c.c.* coordinates* TZ* comments* Standard time Summer time Notes
CN +4348+08735 Asia/Urumqi Xinjiang Time UTC+06:00  
CN +3929+07559 Asia/Kashgar   UTC+06:00 Linked to Asia/Urumqi

alexprengere commented 4 years ago

Regarding NeoBase, it basically depends on how you installed it, and how you set it up.

If it was installed from PyPI using a regular pip install neobase, then the data is embedded with the package, and will be as old as the package itself. I pushed a new release about 4 times a year.

If you installed it from Github, then the data is also embedded with the package, but I do updates at least once a week.

Now regardless on how you installed it, you can always customize the data used.

from neobase import NeoBase
N = NeoBase()                    # use embedded data
N = NeoBase(open("custom.csv"))  # use custom file

You can also use the OPTD_POR_FILE environment variable to customize the default file used.

NeoBase was created as a lightweight fork of GeoBases with no dependency for easier deployment on Spark-based jobs.

MrMey commented 4 years ago

Hello, Regarding the Xinjiang two-timezone problems. Problem is that only the locals ethny uses utc+6 while the officially official is the utc+8. Hard to say who takes the lead.

Regarding such website:

Should you set your watch to Beijing time or Xinjiang time? Here is my suggestion: If I were you, I would set my watch to Beijing time just because any transportation you use – from buses to trains to airplanes – run on official time. It’s better to be on time for these departures than trying to “be local”.

alexprengere commented 2 years ago

For the record, the AKT timezone is now fixed, and a few cases of wrong timezones in China were fixed also (see #166).