pyogrio 0.10.0__cp311-cp311-macosx_12_0_arm64.whl → 0.11.0__cp311-cp311-macosx_12_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyogrio might be problematic. Click here for more details.

Files changed (49) hide show
  1. pyogrio/.dylibs/{libgdal.35.3.9.1.dylib → libgdal.36.3.10.3.dylib} +0 -0
  2. pyogrio/__init__.py +9 -9
  3. pyogrio/_compat.py +8 -0
  4. pyogrio/_err.cpython-311-darwin.so +0 -0
  5. pyogrio/_geometry.cpython-311-darwin.so +0 -0
  6. pyogrio/_io.cpython-311-darwin.so +0 -0
  7. pyogrio/_ogr.cpython-311-darwin.so +0 -0
  8. pyogrio/_version.py +3 -3
  9. pyogrio/_vsi.cpython-311-darwin.so +0 -0
  10. pyogrio/gdal_data/GDAL-targets-release.cmake +3 -3
  11. pyogrio/gdal_data/GDAL-targets.cmake +2 -2
  12. pyogrio/gdal_data/GDALConfigVersion.cmake +3 -3
  13. pyogrio/gdal_data/gdalinfo_output.schema.json +3 -3
  14. pyogrio/gdal_data/gdaltileindex.xsd +1 -17
  15. pyogrio/gdal_data/gdalvrt.xsd +48 -41
  16. pyogrio/gdal_data/nitf_spec.xml +1 -17
  17. pyogrio/gdal_data/nitf_spec.xsd +1 -17
  18. pyogrio/gdal_data/ogrvrt.xsd +1 -17
  19. pyogrio/gdal_data/osmconf.ini +3 -1
  20. pyogrio/gdal_data/pdfcomposition.xsd +1 -17
  21. pyogrio/gdal_data/template_tiles.mapml +28 -0
  22. pyogrio/gdal_data/vcpkg.spdx.json +28 -23
  23. pyogrio/gdal_data/vcpkg_abi_info.txt +28 -27
  24. pyogrio/gdal_data/vdv452.xml +1 -17
  25. pyogrio/gdal_data/vdv452.xsd +1 -17
  26. pyogrio/geopandas.py +91 -43
  27. pyogrio/proj_data/ITRF2014 +1 -1
  28. pyogrio/proj_data/ITRF2020 +91 -0
  29. pyogrio/proj_data/proj-config-version.cmake +3 -3
  30. pyogrio/proj_data/proj-config.cmake +1 -1
  31. pyogrio/proj_data/proj-targets.cmake +3 -3
  32. pyogrio/proj_data/proj.db +0 -0
  33. pyogrio/proj_data/proj.ini +11 -3
  34. pyogrio/proj_data/proj4-targets.cmake +3 -3
  35. pyogrio/proj_data/usage +7 -2
  36. pyogrio/proj_data/vcpkg.spdx.json +27 -22
  37. pyogrio/proj_data/vcpkg_abi_info.txt +16 -15
  38. pyogrio/tests/conftest.py +8 -0
  39. pyogrio/tests/test_arrow.py +3 -0
  40. pyogrio/tests/test_core.py +8 -4
  41. pyogrio/tests/test_geopandas_io.py +250 -42
  42. pyogrio/tests/test_path.py +10 -0
  43. pyogrio/tests/test_raw_io.py +6 -2
  44. pyogrio/util.py +15 -2
  45. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info}/METADATA +32 -37
  46. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info}/RECORD +49 -47
  47. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info}/WHEEL +2 -1
  48. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info/licenses}/LICENSE +0 -0
  49. {pyogrio-0.10.0.dist-info → pyogrio-0.11.0.dist-info}/top_level.txt +0 -0
@@ -1,41 +1,42 @@
1
- cmake 3.30.3
2
- cmake-project-include.cmake 60c0f79155c78ec0ec4ccdc77e00f4613ae4630c6697f51f884bf8f979a48593
3
- curl b05d6dda7ca5aee75b6212c53fa145da50c7a3d88850f9566e5368bc4a6e4964
4
- expat 804f7539f07ed42d99577364afcdee586525d80b5f7db608801b0fc3e65275ca
5
- features core;curl;expat;geos;iconv;jpeg;lerc;png;qhull;recommended-features;sqlite3
1
+ cmake 3.31.6
2
+ cmake-project-include.cmake 196dcc1fc79ab94bae08c6ed5cb169eaaf208ddb656931579128bfd81a7e3582
3
+ curl 22b161e12401607707f5d3e4c3e05b8befaa7594450e9cee73d5bf486255799d
4
+ expat e13f63a43b68353b488cb0d8a16a1ab11290275eb2b77010506f70f12a00c9b2
5
+ features core;curl;expat;geos;iconv;jpeg;lerc;openssl;png;qhull;recommended-features;sqlite3
6
6
  find-link-libraries.patch 043cbdd6298fce33c29d128241470b71990dc13eb63bfa44b3d82b17f5384468
7
7
  fix-gdal-target-interfaces.patch 9dbe9d5e0dbc3a21370bb3560aa32811d10cc0b19e4b6833cd7258699d206215
8
- geos 8971c2bb58577cf4630a66380d7736536a8ca3e427488c70ddf99b6ed6fa82a7
9
- json-c 459e1e396413da1c1d1dffd4c94caa78e45ae308c05186eb1a0af3cd18b6fce9
10
- lerc b40cbfbafcadf8a3cfa193472de41227c09d47832ac3fd43b5dae54f12b45aed
11
- libgeotiff 1ab53bfb70351545e0b8648d429a1191f4617a57ed2f25d9ba09fd8a8821295d
12
- libiconv 4ad83e4ffa73c2fda98d20bdb4ab853867c732e1c2aa8d6d3f9d16c1bb276128
13
- libjpeg-turbo c57dfefa93698724ef21d4d36f3b1eb3c59a05e9407e212a7c067f8477c1e0bb
8
+ geos 840d03838824da1c6d21fd6cdb711423b910c9b0bc683f3ab5405d8c72e08cf4
9
+ json-c fc873573a5d0815db6f25ecbc87c9fd640b9c524769ff7571a31a0d9bd48e59a
10
+ lerc 42d326304450d68da150d458cf31bcf547c8ca596b0d810ecf2514e43766939a
11
+ libgeotiff c9e8bd07236aea19c6a40e03dcf436833651cece4ea4258f2d3df21c06b347af
12
+ libiconv 5f87f3c77bf8b8db5fc7dfa11c578b6f229865b0dd34305a1e7018c656551ac7
13
+ libjpeg-turbo 406fd06b860ab51d7beedc19f169ea29232d37bf3e3ab56b8065915d5a6569b8
14
14
  libkml.patch fe888df8a7c9e468cdd87640c025f48f165d5264af1fa20604bd60859e6f000f
15
- libpng eec9b67798eda021b6c53fdb5251d1d53e57fccd3145fd32a0e294e9d6caadee
16
- pkgconf 30606d6c5825dfe30e59d80fa4982b68f90bd48c7818c916b0db952868a97daf
17
- portfile.cmake 92a0c437215b5fed404a2deb00ade3a8cfb4da00c518af38525a3194a7d89c1a
18
- ports.cmake 3581688c16865b2026d28240d7c6257b848475ffc9fe81b3f3d304973253cf5e
15
+ libpng 5519bf9d87cffea6fdbcd180e7e8a62bd37c4df657b8bcdeaa9c59f91e46c313
16
+ openssl 2213953979b405845f0ed9a963bf7547fb943fcade0736317748553270eeb2b5
17
+ pkgconf 6a1cb6878d02cbbe48ec3c1a7033dd17e3248d8358ed0e6db138af25a47fb8c4
18
+ portfile.cmake cad1f2ba6b48b6df0a2f4237f551d1e42061577c04e77eeafef1cbde7b7a8d5a
19
+ ports.cmake a9f8f745f9f4d225039f9810e79670f10f38c7455222865616ce430a06f75d1f
19
20
  post_build_checks 2
20
- proj 5a1a7dbeacb3aebc73b4e1bf072017a71cdf2af83ef1752e80eaa7edbe646441
21
- qhull 2456ef8df197d28540a5daa1f3fa8a859f594e3295a19bdf17c199a2e3f5443b
22
- sqlite3 7088305e8e220bd88e68b7b65aa8a89b317a74364a2f5b3d16897d279f408b2c
23
- target-is-valid.patch 6a369356c57860f97bd756d3604e7219774e2bfe5c74e5e0178496fad253900f
24
- tiff 6bee7e85690e39fd12d59b13d904e5c2ccc33f22668daa83bcaa8d1ec9bb3ae9
21
+ proj b2ef1758b546a7589c0740f68647dbe45409b00c48c51a3aaa5084952d1e3ee1
22
+ qhull 27dddf51ae880666a099292b8e1fce2c1acbe87d32121ab7ce1760ebe6549a23
23
+ sqlite3 4c05171c755f22ec24b32b862029448485cd9718ab920d3b245c141d5f43696a
24
+ target-is-valid.patch d9404cebec6e0f7dc6ae92af733ebad86584eafc40742c916603a8338acfcd15
25
+ tiff fd68529926bf04dedbf138cf60eaf8c8e73af7bebcb3341657678f3e5ceddedb
25
26
  triplet arm64-osx-dynamic-release
26
- triplet_abi bfb2f1a725a6c7d4c5a71c9867dbce26242b53ad1005a453f934440a490c77ba-4cdbc0a68d47eedc16d246a07a21fabfbbe19abb89f00890c58902e2cf872d6f-5f75c9acc02e05029cedb7eca90c49644cc3a77a
27
+ triplet_abi bfb2f1a725a6c7d4c5a71c9867dbce26242b53ad1005a453f934440a490c77ba-c6536c929f0b7e5191e31cc452a71864a2b2273ecad8b5d2b27a82f75d8cc6af-ff2c5a09a0ce40d6d8029ce6365bdc326e54075b
27
28
  usage c85584261e2011a94b86f04c3a28dd2e165c9e6b47677a9bee26a3d387bc05f2
28
- vcpkg-cmake c8f1bf76f78dee8ca0d9884a6918cf0ec11c1abe045fd9bca2f9ae44af917e05
29
- vcpkg-cmake-config dc22b69eeb823c856b78701093a239737a86039d6e913df4a326bd163f23f9f3
29
+ vcpkg-cmake 40a914f9f2ce407f0c6effd8372fdaf561b2d183abbde65dc9ead58fe558cf9a
30
+ vcpkg-cmake-config d2c96fec92e0c3a0078788407dd660b8ad7f4bc34e553c17b04dd5f1d2b57ca7
30
31
  vcpkg-cmake-wrapper.cmake c507eaa077072e9877607fd5f70381eebf19900661e2e1fd099d84c4df1b8c24
31
- vcpkg-pkgconfig-get-modules fa73494acc856df7517791770af3ff3e2fc06d500106d03e7ba18a4c7899ec38
32
- vcpkg.json 71bb644d1501bdc16fbe5e88a45a27c478bee667cbace588c569de28778c89ff
32
+ vcpkg-pkgconfig-get-modules 10218edca9d3c14030f0a3cce55e591a7a3ca15ed3c97714d01868e70f8849b1
33
+ vcpkg.json f72051f0ae2778e0a0ccf7953d6eff004ef88af304dc7ca173c773275ab99d3a
33
34
  vcpkg_check_features 943b217e0968d64cf2cb9c272608e6a0b497377e792034f819809a79e1502c2b
34
- vcpkg_copy_pdbs d57e4f196c82dc562a9968c6155073094513c31e2de475694143d3aa47954b1c
35
+ vcpkg_copy_pdbs d15c2f2822d93ecb9023af44803328e491c5374136e0813600289582a72d196d
35
36
  vcpkg_copy_tools 3d45ff761bddbabe8923b52330168dc3abd295fa469d3f2e47cb14dce85332d5
36
37
  vcpkg_fixup_pkgconfig 1a15f6c6d8e2b244d83a7514a0412d339127d2217d1df60ad1388b546c85f777
37
38
  vcpkg_from_git 96ed81968f76354c00096dd8cd4e63c6a235fa969334a11ab18d11c0c512ff58
38
39
  vcpkg_from_github b743742296a114ea1b18ae99672e02f142c4eb2bef7f57d36c038bedbfb0502f
39
40
  vcpkg_install_copyright ba6c169ab4e59fa05682e530cdeb883767de22c8391f023d4e6844a7ec5dd3d2
40
41
  vcpkg_replace_string b450deb79207478b37119743e00808ebc42de0628e7b98c14ab24728bd5c78b8
41
- zlib 57a05545e358c1413c36c61d80640d32bfa56070760e74e862be2d76fa12704a
42
+ zlib afca38dbe097020952263cf89754c05d172cbe30f015cbcc1ecaf1b774c975dc
@@ -10,23 +10,7 @@
10
10
  **********************************************************************
11
11
  * Copyright (c) 2015, Even Rouault
12
12
  *
13
- * Permission is hereby granted, free of charge, to any person obtaining a
14
- * copy of this software and associated documentation files (the "Software"),
15
- * to deal in the Software without restriction, including without limitation
16
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17
- * and/or sell copies of the Software, and to permit persons to whom the
18
- * Software is furnished to do so, subject to the following conditions:
19
- *
20
- * The above copyright notice and this permission notice shall be included
21
- * in all copies or substantial portions of the Software.
22
- *
23
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29
- * DEALINGS IN THE SOFTWARE.
13
+ * SPDX-License-Identifier: MIT
30
14
  ****************************************************************************/
31
15
  -->
32
16
  <Layers>
@@ -10,23 +10,7 @@
10
10
  **********************************************************************
11
11
  * Copyright (c) 2015, Even Rouault
12
12
  *
13
- * Permission is hereby granted, free of charge, to any person obtaining a
14
- * copy of this software and associated documentation files (the "Software"),
15
- * to deal in the Software without restriction, including without limitation
16
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17
- * and/or sell copies of the Software, and to permit persons to whom the
18
- * Software is furnished to do so, subject to the following conditions:
19
- *
20
- * The above copyright notice and this permission notice shall be included
21
- * in all copies or substantial portions of the Software.
22
- *
23
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29
- * DEALINGS IN THE SOFTWARE.
13
+ * SPDX-License-Identifier: MIT
30
14
  ****************************************************************************/
31
15
  -->
32
16
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
pyogrio/geopandas.py CHANGED
@@ -5,7 +5,14 @@ import warnings
5
5
 
6
6
  import numpy as np
7
7
 
8
- from pyogrio._compat import HAS_GEOPANDAS, PANDAS_GE_15, PANDAS_GE_20, PANDAS_GE_22
8
+ from pyogrio._compat import (
9
+ HAS_GEOPANDAS,
10
+ PANDAS_GE_15,
11
+ PANDAS_GE_20,
12
+ PANDAS_GE_22,
13
+ PANDAS_GE_30,
14
+ PYARROW_GE_19,
15
+ )
9
16
  from pyogrio.errors import DataSourceError
10
17
  from pyogrio.raw import (
11
18
  DRIVERS_NO_MIXED_DIMENSIONS,
@@ -52,13 +59,13 @@ def _try_parse_datetime(ser):
52
59
  except Exception:
53
60
  res = ser
54
61
  # if object dtype, try parse as utc instead
55
- if res.dtype == "object":
62
+ if res.dtype in ("object", "string"):
56
63
  try:
57
64
  res = pd.to_datetime(ser, utc=True, **datetime_kwargs)
58
65
  except Exception:
59
66
  pass
60
67
 
61
- if res.dtype != "object":
68
+ if res.dtype.kind == "M": # any datetime64
62
69
  # GDAL only supports ms precision, convert outputs to match.
63
70
  # Pandas 2.0 supports datetime[ms] directly, prior versions only support [ns],
64
71
  # Instead, round the values to [ms] precision.
@@ -209,6 +216,9 @@ def read_dataframe(
209
216
  warning will be raised.
210
217
  - **ignore**: invalid WKB geometries will be returned as ``None``
211
218
  without a warning.
219
+ - **fix**: an effort is made to fix invalid input geometries (currently
220
+ just unclosed rings). If this is not possible, they are returned as
221
+ ``None`` without a warning. Requires GEOS >= 3.11 and shapely >= 2.1.
212
222
 
213
223
  arrow_to_pandas_kwargs : dict, optional (default: None)
214
224
  When `use_arrow` is True, these kwargs will be passed to the `to_pandas`_
@@ -282,14 +292,42 @@ def read_dataframe(
282
292
  )
283
293
 
284
294
  if use_arrow:
295
+ import pyarrow as pa
296
+
285
297
  meta, table = result
286
298
 
287
299
  # split_blocks and self_destruct decrease memory usage, but have as side effect
288
300
  # that accessing table afterwards causes crash, so del table to avoid.
289
301
  kwargs = {"self_destruct": True}
302
+ if PANDAS_GE_30:
303
+ # starting with pyarrow 19.0, pyarrow will correctly handle this themselves,
304
+ # so only use types_mapper as workaround for older versions
305
+ if not PYARROW_GE_19:
306
+ kwargs["types_mapper"] = {
307
+ pa.string(): pd.StringDtype(na_value=np.nan),
308
+ pa.large_string(): pd.StringDtype(na_value=np.nan),
309
+ pa.json_(): pd.StringDtype(na_value=np.nan),
310
+ }.get
311
+ # TODO enable the below block when upstream issue to accept extension types
312
+ # is fixed
313
+ # else:
314
+ # # for newer pyarrow, still include mapping for json
315
+ # # GDAL 3.11 started to emit this extension type, but pyarrow does not
316
+ # # yet support it properly in the conversion to pandas
317
+ # kwargs["types_mapper"] = {
318
+ # pa.json_(): pd.StringDtype(na_value=np.nan),
319
+ # }.get
290
320
  if arrow_to_pandas_kwargs is not None:
291
321
  kwargs.update(arrow_to_pandas_kwargs)
292
- df = table.to_pandas(**kwargs)
322
+
323
+ try:
324
+ df = table.to_pandas(**kwargs)
325
+ except UnicodeDecodeError as ex:
326
+ # Arrow does not support reading data in a non-UTF-8 encoding
327
+ raise DataSourceError(
328
+ "The file being read is not encoded in UTF-8; please use_arrow=False"
329
+ ) from ex
330
+
293
331
  del table
294
332
 
295
333
  if fid_as_index:
@@ -333,7 +371,6 @@ def read_dataframe(
333
371
  return gp.GeoDataFrame(df, geometry=geometry, crs=meta["crs"])
334
372
 
335
373
 
336
- # TODO: handle index properly
337
374
  def write_dataframe(
338
375
  df,
339
376
  path,
@@ -469,47 +506,9 @@ def write_dataframe(
469
506
  if len(geometry_columns) > 0:
470
507
  geometry_column = geometry_columns[0]
471
508
  geometry = df[geometry_column]
472
- fields = [c for c in df.columns if not c == geometry_column]
473
509
  else:
474
510
  geometry_column = None
475
511
  geometry = None
476
- fields = list(df.columns)
477
-
478
- # TODO: may need to fill in pd.NA, etc
479
- field_data = []
480
- field_mask = []
481
- # dict[str, np.array(int)] special case for dt-tz fields
482
- gdal_tz_offsets = {}
483
- for name in fields:
484
- col = df[name]
485
- if isinstance(col.dtype, pd.DatetimeTZDtype):
486
- # Deal with datetimes with timezones by passing down timezone separately
487
- # pass down naive datetime
488
- naive = col.dt.tz_localize(None)
489
- values = naive.values
490
- # compute offset relative to UTC explicitly
491
- tz_offset = naive - col.dt.tz_convert("UTC").dt.tz_localize(None)
492
- # Convert to GDAL timezone offset representation.
493
- # GMT is represented as 100 and offsets are represented by adding /
494
- # subtracting 1 for every 15 minutes different from GMT.
495
- # https://gdal.org/development/rfc/rfc56_millisecond_precision.html#core-changes
496
- # Convert each row offset to a signed multiple of 15m and add to GMT value
497
- gdal_offset_representation = tz_offset // pd.Timedelta("15m") + 100
498
- gdal_tz_offsets[name] = gdal_offset_representation.values
499
- else:
500
- values = col.values
501
- if isinstance(values, pd.api.extensions.ExtensionArray):
502
- from pandas.arrays import BooleanArray, FloatingArray, IntegerArray
503
-
504
- if isinstance(values, (IntegerArray, FloatingArray, BooleanArray)):
505
- field_data.append(values._data)
506
- field_mask.append(values._mask)
507
- else:
508
- field_data.append(np.asarray(values))
509
- field_mask.append(np.asarray(values.isna()))
510
- else:
511
- field_data.append(values)
512
- field_mask.append(None)
513
512
 
514
513
  # Determine geometry_type and/or promote_to_multi
515
514
  if geometry_column is not None:
@@ -622,6 +621,15 @@ def write_dataframe(
622
621
 
623
622
  table = pa.Table.from_pandas(df, preserve_index=False)
624
623
 
624
+ # Null arrow columns are not supported by GDAL, so convert to string
625
+ for field_index, field in enumerate(table.schema):
626
+ if field.type == pa.null():
627
+ table = table.set_column(
628
+ field_index,
629
+ field.with_type(pa.string()),
630
+ table[field_index].cast(pa.string()),
631
+ )
632
+
625
633
  if geometry_column is not None:
626
634
  # ensure that the geometry column is binary (for all-null geometries,
627
635
  # this could be a wrong type)
@@ -658,6 +666,46 @@ def write_dataframe(
658
666
  # If there is geometry data, prepare it to be written
659
667
  if geometry_column is not None:
660
668
  geometry = to_wkb(geometry.values)
669
+ fields = [c for c in df.columns if not c == geometry_column]
670
+ else:
671
+ fields = list(df.columns)
672
+
673
+ # Convert data to numpy arrays for writing
674
+ # TODO: may need to fill in pd.NA, etc
675
+ field_data = []
676
+ field_mask = []
677
+ # dict[str, np.array(int)] special case for dt-tz fields
678
+ gdal_tz_offsets = {}
679
+ for name in fields:
680
+ col = df[name]
681
+ if isinstance(col.dtype, pd.DatetimeTZDtype):
682
+ # Deal with datetimes with timezones by passing down timezone separately
683
+ # pass down naive datetime
684
+ naive = col.dt.tz_localize(None)
685
+ values = naive.values
686
+ # compute offset relative to UTC explicitly
687
+ tz_offset = naive - col.dt.tz_convert("UTC").dt.tz_localize(None)
688
+ # Convert to GDAL timezone offset representation.
689
+ # GMT is represented as 100 and offsets are represented by adding /
690
+ # subtracting 1 for every 15 minutes different from GMT.
691
+ # https://gdal.org/development/rfc/rfc56_millisecond_precision.html#core-changes
692
+ # Convert each row offset to a signed multiple of 15m and add to GMT value
693
+ gdal_offset_representation = tz_offset // pd.Timedelta("15m") + 100
694
+ gdal_tz_offsets[name] = gdal_offset_representation.values
695
+ else:
696
+ values = col.values
697
+ if isinstance(values, pd.api.extensions.ExtensionArray):
698
+ from pandas.arrays import BooleanArray, FloatingArray, IntegerArray
699
+
700
+ if isinstance(values, (IntegerArray, FloatingArray, BooleanArray)):
701
+ field_data.append(values._data)
702
+ field_mask.append(values._mask)
703
+ else:
704
+ field_data.append(np.asarray(values))
705
+ field_mask.append(np.asarray(values.isna()))
706
+ else:
707
+ field_data.append(values)
708
+ field_mask.append(None)
661
709
 
662
710
  write(
663
711
  path,
@@ -7,7 +7,7 @@
7
7
 
8
8
  <ITRF2000> +proj=helmert +x=0.0007 +y=0.0012 +z=-0.0261 +s=0.00212 +dx=0.0001 +dy=0.0001 +dz=-0.0019 +ds=0.00011 +t_epoch=2010.0 +convention=position_vector
9
9
 
10
- <ITRF97> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +d=0.0038 +rz=0.00026 +dx0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
10
+ <ITRF97> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +s=0.0038 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
11
11
 
12
12
  <ITRF96> +proj=helmert +x=0.0074 +y=-0.0005 +z=-0.0628 +s=0.0038 +rz=0.00026 +dx=0.0001 +dy=-0.0005 +dz=-0.0033 +ds=0.00012 +drz=0.00002 +t_epoch=2010.0 +convention=position_vector
13
13
 
@@ -0,0 +1,91 @@
1
+ # ITRF2020 params are in mm/year, PJ_helmert uses m/year
2
+
3
+ # Generated with generate_itrf2020.py from EPSG database
4
+
5
+ <ITRF2014> +proj=helmert +x=-0.0014 +y=-0.0009 +z=0.0014 +s=-0.00042 +dy=-0.0001 +dz=0.0002 +t_epoch=2015 +convention=position_vector
6
+
7
+ <ITRF2008> +proj=helmert +x=0.0002 +y=0.001 +z=0.0033 +s=-0.00029 +dy=-0.0001 +dz=0.0001 +ds=3e-05 +t_epoch=2015 +convention=position_vector
8
+
9
+ <ITRF2005> +proj=helmert +x=0.0027 +y=0.0001 +z=-0.0014 +s=0.00065 +dx=0.0003 +dy=-0.0001 +dz=0.0001 +ds=3e-05 +t_epoch=2015 +convention=position_vector
10
+
11
+ <ITRF2000> +proj=helmert +x=-0.0002 +y=0.0008 +z=-0.0342 +s=0.00225 +dx=0.0001 +dz=-0.0017 +ds=0.00011 +t_epoch=2015 +convention=position_vector
12
+
13
+ <ITRF97> +proj=helmert +x=0.0065 +y=-0.0039 +z=-0.0779 +rz=0.00036 +s=0.00398 +dx=0.0001 +dy=-0.0006 +dz=-0.0031 +drz=2e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
14
+
15
+ <ITRF96> +proj=helmert +x=0.0065 +y=-0.0039 +z=-0.0779 +rz=0.00036 +s=0.00398 +dx=0.0001 +dy=-0.0006 +dz=-0.0031 +drz=2e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
16
+
17
+ <ITRF94> +proj=helmert +x=0.0065 +y=-0.0039 +z=-0.0779 +rz=0.00036 +s=0.00398 +dx=0.0001 +dy=-0.0006 +dz=-0.0031 +drz=2e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
18
+
19
+ <ITRF93> +proj=helmert +x=-0.0658 +y=0.0019 +z=-0.0713 +rx=-0.00336 +ry=-0.00433 +rz=0.00075 +s=0.00447 +dx=-0.0028 +dy=-0.0002 +dz=-0.0023 +drx=-0.00011 +dry=-0.00019 +drz=7e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
20
+
21
+ <ITRF92> +proj=helmert +x=0.0145 +y=-0.0019 +z=-0.0859 +rz=0.00036 +s=0.00327 +dx=0.0001 +dy=-0.0006 +dz=-0.0031 +drz=2e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
22
+
23
+ <ITRF91> +proj=helmert +x=0.0265 +y=0.0121 +z=-0.0919 +rz=0.00036 +s=0.00467 +dx=0.0001 +dy=-0.0006 +dz=-0.0031 +drz=2e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
24
+
25
+ <ITRF90> +proj=helmert +x=0.0245 +y=0.0081 +z=-0.1079 +rz=0.00036 +s=0.00497 +dx=0.0001 +dy=-0.0006 +dz=-0.0031 +drz=2e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
26
+
27
+ <ITRF89> +proj=helmert +x=0.0295 +y=0.0321 +z=-0.1459 +rz=0.00036 +s=0.00837 +dx=0.0001 +dy=-0.0006 +dz=-0.0031 +drz=2e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
28
+
29
+ <ITRF88> +proj=helmert +x=0.0245 +y=-0.0039 +z=-0.1699 +rx=0.0001 +rz=0.00036 +s=0.01147 +dx=0.0001 +dy=-0.0006 +dz=-0.0031 +drz=2e-05 +ds=0.00012 +t_epoch=2015 +convention=position_vector
30
+
31
+ # ITRF2020 Plate Motion Model parameters
32
+ #
33
+ # As described in https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2023GL106373
34
+ # (and also in https://itrf.ign.fr/docs/solutions/itrf2020/ITRF2020-PMM.dat, but with
35
+ # different units)
36
+
37
+ <AMUR> +proj=helmert +drx=-0.000131 +dry=-0.000551 +drz=0.000837 +convention=position_vector
38
+
39
+ <ANTA> +proj=helmert +drx=-0.000269 +dry=-0.000312 +drz=0.000678 +convention=position_vector
40
+
41
+ <ARAB> +proj=helmert +drx=0.001129 +dry=-0.000146 +drz=0.001438 +convention=position_vector
42
+
43
+ <AUST> +proj=helmert +drx=0.001487 +dry=0.001175 +drz=0.001223 +convention=position_vector
44
+
45
+ <CARB> +proj=helmert +drx=0.000207 +dry=-0.001422 +drz=0.000726 +convention=position_vector
46
+
47
+ <EURA> +proj=helmert +drx=-0.000085 +dry=-0.000519 +drz=0.000753 +convention=position_vector
48
+
49
+ <INDI> +proj=helmert +drx=0.001137 +dry=0.000013 +drz=0.001444 +convention=position_vector
50
+
51
+ <NAZC> +proj=helmert +drx=-0.000327 +dry=-0.001561 +drz=0.001605 +convention=position_vector
52
+
53
+ <NOAM> +proj=helmert +drx=0.000045 +dry=-0.000666 +drz=-0.000098 +convention=position_vector
54
+
55
+ <NUBI> +proj=helmert +drx=0.000090 +dry=-0.000585 +drz=0.000717 +convention=position_vector
56
+
57
+ <PCFC> +proj=helmert +drx=-0.000404 +dry=0.001021 +drz=-0.002154 +convention=position_vector
58
+
59
+ <SOAM> +proj=helmert +drx=-0.000261 +dry=-0.000282 +drz=-0.000157 +convention=position_vector
60
+
61
+ <SOMA> +proj=helmert +drx=-0.000081 +dry=-0.000719 +drz=0.000864 +convention=position_vector
62
+
63
+ # Plate names suffixed by _T (for Translation) that includes the translation
64
+ # rates +dx=0.00037 +dy=0.00035 +dz=0.00074 given by Table 2 of the ITRF2020 plate motion model
65
+ # paper
66
+
67
+ <AMUR_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=-0.000131 +dry=-0.000551 +drz=0.000837 +convention=position_vector
68
+
69
+ <ANTA_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=-0.000269 +dry=-0.000312 +drz=0.000678 +convention=position_vector
70
+
71
+ <ARAB_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=0.001129 +dry=-0.000146 +drz=0.001438 +convention=position_vector
72
+
73
+ <AUST_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=0.001487 +dry=0.001175 +drz=0.001223 +convention=position_vector
74
+
75
+ <CARB_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=0.000207 +dry=-0.001422 +drz=0.000726 +convention=position_vector
76
+
77
+ <EURA_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=-0.000085 +dry=-0.000519 +drz=0.000753 +convention=position_vector
78
+
79
+ <INDI_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=0.001137 +dry=0.000013 +drz=0.001444 +convention=position_vector
80
+
81
+ <NAZC_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=-0.000327 +dry=-0.001561 +drz=0.001605 +convention=position_vector
82
+
83
+ <NOAM_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=0.000045 +dry=-0.000666 +drz=-0.000098 +convention=position_vector
84
+
85
+ <NUBI_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=0.000090 +dry=-0.000585 +drz=0.000717 +convention=position_vector
86
+
87
+ <PCFC_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=-0.000404 +dry=0.001021 +drz=-0.002154 +convention=position_vector
88
+
89
+ <SOAM_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=-0.000261 +dry=-0.000282 +drz=-0.000157 +convention=position_vector
90
+
91
+ <SOMA_T> +proj=helmert +dx=0.00037 +dy=0.00035 +dz=0.00074 +drx=-0.000081 +dry=-0.000719 +drz=0.000864 +convention=position_vector
@@ -1,9 +1,9 @@
1
1
  # Version checking for PROJ
2
2
 
3
- set (PACKAGE_VERSION "9.4.1")
3
+ set (PACKAGE_VERSION "9.6.0")
4
4
  set (PACKAGE_VERSION_MAJOR "9")
5
- set (PACKAGE_VERSION_MINOR "4")
6
- set (PACKAGE_VERSION_PATCH "1")
5
+ set (PACKAGE_VERSION_MINOR "6")
6
+ set (PACKAGE_VERSION_PATCH "0")
7
7
 
8
8
  # These variable definitions parallel those in PROJ's
9
9
  # cmake/CMakeLists.txt.
@@ -27,7 +27,7 @@ if("TRUE")
27
27
  endif()
28
28
  cmake_policy(POP)
29
29
 
30
- find_dependency(SQLite3)
30
+ find_dependency(unofficial-sqlite3)
31
31
 
32
32
  if(DEFINED PROJ_CONFIG_FIND_TIFF_DEP)
33
33
  find_dependency(TIFF)
@@ -1,13 +1,13 @@
1
1
  # Generated by CMake
2
2
 
3
3
  if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
4
- message(FATAL_ERROR "CMake >= 2.8.0 required")
4
+ message(FATAL_ERROR "CMake >= 2.8.12 required")
5
5
  endif()
6
6
  if(CMAKE_VERSION VERSION_LESS "2.8.12")
7
7
  message(FATAL_ERROR "CMake >= 2.8.12 required")
8
8
  endif()
9
9
  cmake_policy(PUSH)
10
- cmake_policy(VERSION 2.8.12...3.28)
10
+ cmake_policy(VERSION 2.8.12...3.29)
11
11
  #----------------------------------------------------------------
12
12
  # Generated CMake target import file.
13
13
  #----------------------------------------------------------------
@@ -60,7 +60,7 @@ add_library(PROJ::proj STATIC IMPORTED)
60
60
  set_target_properties(PROJ::proj PROPERTIES
61
61
  INTERFACE_COMPILE_DEFINITIONS "PROJ_DLL="
62
62
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
63
- INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:-lm>;\$<LINK_ONLY:-ldl>;\$<LINK_ONLY:SQLite::SQLite3>;\$<LINK_ONLY:>;\$<LINK_ONLY:TIFF::TIFF>;\$<LINK_ONLY:CURL::libcurl>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:ws2_32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:wldap32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:advapi32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:crypt32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:normaliz>>"
63
+ INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:-lm>;\$<LINK_ONLY:-ldl>;\$<LINK_ONLY:unofficial::sqlite3::sqlite3>;\$<LINK_ONLY:>;\$<LINK_ONLY:TIFF::TIFF>;\$<LINK_ONLY:CURL::libcurl>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:ws2_32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:wldap32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:advapi32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:crypt32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:normaliz>>"
64
64
  )
65
65
 
66
66
  # Load information for each installed configuration.
pyogrio/proj_data/proj.db CHANGED
Binary file
@@ -23,13 +23,13 @@ cache_enabled = on
23
23
  cache_size_MB = 300
24
24
 
25
25
  ; Time-to-live delay in seconds before already accessed remote resources are
26
- ; acessed again to check if they have been updated.
26
+ ; accessed again to check if they have been updated.
27
27
  cache_ttl_sec = 86400
28
28
 
29
29
  ; Can be set to on so that by default the lack of a known resource files needed
30
30
  ; for the best transformation PROJ would normally use causes an error, or off
31
31
  ; to accept missing resource files without errors or warnings.
32
- ; This default value itself is overriden by the PROJ_ONLY_BEST_DEFAULT environment
32
+ ; This default value itself is overridden by the PROJ_ONLY_BEST_DEFAULT environment
33
33
  ; variable if set, and then by the ONLY_BEST setting that can be
34
34
  ; passed to the proj_create_crs_to_crs() method, or with the --only-best
35
35
  ; option of the cs2cs program.
@@ -38,10 +38,18 @@ cache_ttl_sec = 86400
38
38
  only_best_default = off
39
39
 
40
40
  ; Filename of the Certificate Authority (CA) bundle.
41
- ; Can be overriden with the PROJ_CURL_CA_BUNDLE / CURL_CA_BUNDLE environment variable.
41
+ ; Can be overridden with the PROJ_CURL_CA_BUNDLE / CURL_CA_BUNDLE environment variable.
42
42
  ; (added in PROJ 9.0)
43
43
  ; ca_bundle_path = /path/to/cabundle.pem
44
44
 
45
+ ; When this is set to on, the operating systems native CA store will be used for certificate verification
46
+ ; If you set this option to on and also set ca_bundle_path then during verification those certificates are
47
+ ; searched in addition to the native CA store.
48
+ ; (added in PROJ 9.6)
49
+ ; Valid values = on, off
50
+ ;native_ca = on
51
+
52
+
45
53
  ; Transverse Mercator (and UTM) default algorithm: auto, evenden_snyder or poder_engsager
46
54
  ; * evenden_snyder is the fastest, but less accurate far from central meridian
47
55
  ; * poder_engsager is slower, but more accurate far from central meridian
@@ -1,13 +1,13 @@
1
1
  # Generated by CMake
2
2
 
3
3
  if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
4
- message(FATAL_ERROR "CMake >= 2.8.0 required")
4
+ message(FATAL_ERROR "CMake >= 2.8.12 required")
5
5
  endif()
6
6
  if(CMAKE_VERSION VERSION_LESS "2.8.12")
7
7
  message(FATAL_ERROR "CMake >= 2.8.12 required")
8
8
  endif()
9
9
  cmake_policy(PUSH)
10
- cmake_policy(VERSION 2.8.12...3.28)
10
+ cmake_policy(VERSION 2.8.12...3.29)
11
11
  #----------------------------------------------------------------
12
12
  # Generated CMake target import file.
13
13
  #----------------------------------------------------------------
@@ -60,7 +60,7 @@ add_library(PROJ4::proj STATIC IMPORTED)
60
60
  set_target_properties(PROJ4::proj PROPERTIES
61
61
  INTERFACE_COMPILE_DEFINITIONS "PROJ_DLL="
62
62
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
63
- INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:-lm>;\$<LINK_ONLY:-ldl>;\$<LINK_ONLY:SQLite::SQLite3>;\$<LINK_ONLY:>;\$<LINK_ONLY:TIFF::TIFF>;\$<LINK_ONLY:CURL::libcurl>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:ws2_32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:wldap32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:advapi32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:crypt32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:normaliz>>"
63
+ INTERFACE_LINK_LIBRARIES "\$<LINK_ONLY:-lm>;\$<LINK_ONLY:-ldl>;\$<LINK_ONLY:unofficial::sqlite3::sqlite3>;\$<LINK_ONLY:>;\$<LINK_ONLY:TIFF::TIFF>;\$<LINK_ONLY:CURL::libcurl>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:ws2_32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:wldap32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:advapi32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:crypt32>>;\$<LINK_ONLY:\$<\$<CXX_COMPILER_ID:MSVC>:normaliz>>"
64
64
  )
65
65
 
66
66
  # Load information for each installed configuration.
pyogrio/proj_data/usage CHANGED
@@ -1,4 +1,9 @@
1
1
  proj provides CMake targets:
2
2
 
3
- find_package(PROJ CONFIG REQUIRED)
4
- target_link_libraries(main PRIVATE PROJ::proj)
3
+ find_package(PROJ CONFIG REQUIRED)
4
+ target_link_libraries(main PRIVATE PROJ::proj)
5
+
6
+ proj provides pkg-config modules:
7
+
8
+ # Coordinate transformation software library
9
+ proj