Tách polylines bằng cách sử dụng các vùng với PostGIS


8

Tôi đã tự hỏi nếu có thể phân chia một đa tuyến trên các ranh giới đa giác (các vùng) trong PostGIS, hình ảnh dưới đây là về những gì chúng ta có tại thời điểm này và cho thấy nơi tôi cần phân chia polylines:

văn bản thay thế

Hãy gọi các khu vực road_blocksvà các dòngroad_cl

Nếu bạn có thể sao chép dữ liệu từ bên road_blockdưới đa tuyến mới được tạo sang đa tuyến mới sẽ là một phần thưởng thực sự.

Câu trả lời:


11
CREATE TABLE new_road_cl AS
  SELECT ST_Intersection(r.geom, b.geom) AS geom,
         b.attr1, b.attr2, b.attr3,
         r.attr1, r.attr2, r.attr3
  FROM road_blocks b, road_cl r
  WHERE ST_Intersects(r.geom, b.geom);

Cảm ơn nhưng tôi dường như có được điều này khi tôi chạy nó: TopologyException: found non-noded intersection between LINESTRING (397766 6.83237e+006, 397769 6.83237e+006) and LINESTRING (397767 6.83238e+006, 397766 6.83237e+006) at 397766 6.83237e+006
Nathan W

Chỉ cần chạy nó trên một con đường, có vẻ như có một số dữ liệu không đúng định dạng ở đâu đó.
Nathan W

1
+1 Đẹp. Không phải là the_geomkhông geom, tên trường hình học mặc định?
Adam Matan

2

Nathan,

1) Đảm bảo hình học của bạn hợp lệ - hình học không hợp lệ là nguyên nhân chính gây ra các loại lỗi này. CHỌN ST_IsValid (geom);

2) Phiên bản nào của geos bạn đang chạy? Làm một

CHỌN postgis_full_version ();

GEOS 3.2+ gặp ít vấn đề ngoại lệ tôpô hơn.

Đối với Adam - Paul đã quyết định một ngày anh ta quá lười biếng để gõ the_geom :) - vì vậy anh ta tuyên bố "từ giờ trở đi mặc định sẽ là - geom". Tất cả chúng tôi đều giậm chân và nói - KHÔNG cho đến 2.0

Vì vậy, geog được mặc định cho địa lý và geom sẽ là mặc định trong 2.0 cho hình học.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.