Skip to content

Commit 2d6b712

Browse files
committed
hard-coded morecantile corner and point of origin;added axis orientation dependend tile iteration
1 parent de8948f commit 2d6b712

File tree

5 files changed

+41
-31
lines changed

5 files changed

+41
-31
lines changed

docs/guides/tile.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@
762762
"name": "python",
763763
"nbconvert_exporter": "python",
764764
"pygments_lexer": "ipython3",
765-
"version": "3.12.12"
765+
"version": "3.12.3"
766766
}
767767
},
768768
"nbformat": 4,

src/pytileproj/tiling.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,12 @@ def model_post_init(self, context: Any) -> None: # noqa: ANN401
6363
self._tm = TileMatrix(
6464
scaleDenominator=self.sampling / 0.28e-3, # per OGC definition
6565
cellSize=self.sampling,
66-
cornerOfOrigin=self.corner_of_origin.value,
67-
pointOfOrigin=self.origin_xy,
66+
# hard-coded at the moment due to a bug in morecantile
67+
cornerOfOrigin=CornerOfOrigin.top_left.value,
68+
pointOfOrigin=(
69+
self.extent[0],
70+
self.extent[3],
71+
),
6872
tileWidth=tile_width,
6973
tileHeight=tile_height,
7074
matrixWidth=matrix_width,

src/pytileproj/tiling_system.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,17 +1354,19 @@ def _tiles(
13541354
miny = min(nw_tile.y, se_tile.y)
13551355
maxy = max(nw_tile.y, se_tile.y)
13561356

1357-
matrix = self._tms.matrix(tiling_level)
1358-
for j in range(miny, maxy + 1):
1359-
cf = (
1360-
matrix.get_coalesce_factor(j)
1361-
if matrix.variableMatrixWidths is not None
1362-
else 1
1363-
)
1364-
for i in range(minx, maxx + 1):
1365-
if cf != 1 and i % cf:
1366-
continue
1357+
axis_orientation = self[tiling_level].axis_orientation
1358+
if axis_orientation[0] == "E":
1359+
xrange = range(minx, maxx + 1)
1360+
else:
1361+
xrange = range(maxx, minx - 1, -1)
1362+
1363+
if axis_orientation[0] == "S":
1364+
yrange = range(miny, maxy + 1)
1365+
else:
1366+
yrange = range(maxy, miny - 1, -1)
13671367

1368+
for i in xrange:
1369+
for j in yrange:
13681370
tile = RegularTile(i, j, tiling_level)
13691371
tilename = self._tile_to_name(tile)
13701372
raster_tile = self._tile_to_raster_tile(tile, name=tilename)

tests/test_grid.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -243,29 +243,33 @@ def test_system_tiles_different_order(
243243
tilenames = [
244244
tile.name for tile in e7grid.get_tiles_in_geog_bbox(euas_bbox, tiling_id="t2")
245245
]
246-
assert tilenames == [
247-
"e7as_X018Y028T02",
248-
"e7as_X019Y028T02",
249-
"e7as_X018Y029T02",
250-
"e7as_X019Y029T02",
251-
"e7eu_X72Y30T02",
252-
"e7eu_X73Y30T02",
253-
]
246+
assert sorted(tilenames) == sorted(
247+
[
248+
"e7as_X018Y028T02",
249+
"e7as_X019Y028T02",
250+
"e7as_X018Y029T02",
251+
"e7as_X019Y029T02",
252+
"e7eu_X72Y30T02",
253+
"e7eu_X73Y30T02",
254+
]
255+
)
254256

255257
e7grid = RegularGrid.from_sampling(
256258
10, euas_defs, tiling_defs_multi, system_order=["e7eu", "e7as"]
257259
)
258260
tilenames = [
259261
tile.name for tile in e7grid.get_tiles_in_geog_bbox(euas_bbox, tiling_id="t2")
260262
]
261-
assert tilenames == [
262-
"e7eu_X72Y30T02",
263-
"e7eu_X73Y30T02",
264-
"e7as_X018Y028T02",
265-
"e7as_X019Y028T02",
266-
"e7as_X018Y029T02",
267-
"e7as_X019Y029T02",
268-
]
263+
assert sorted(tilenames) == sorted(
264+
[
265+
"e7eu_X72Y30T02",
266+
"e7eu_X73Y30T02",
267+
"e7as_X018Y028T02",
268+
"e7as_X019Y028T02",
269+
"e7as_X018Y029T02",
270+
"e7as_X019Y029T02",
271+
]
272+
)
269273

270274
e7grid = RegularGrid.from_sampling(
271275
10, euas_defs, tiling_defs_multi, system_order=["e7eu"]

tests/test_tiling.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ def test_to_ogc(reg_tiling: RegularTiling):
5353
"id": "0",
5454
"scaleDenominator": 3571.4285714285716,
5555
"cellSize": 1.0,
56-
"cornerOfOrigin": "bottomLeft",
57-
"pointOfOrigin": (0.0, 0.0),
56+
"cornerOfOrigin": "topLeft",
57+
"pointOfOrigin": (0.0, 90.0),
5858
"tileWidth": 10,
5959
"tileHeight": 10,
6060
"matrixWidth": 18,

0 commit comments

Comments
 (0)