Tạo các cột trong PostGIS bằng cách sử dụng thẻ hstore osm2pgsql


8

Mặc dù tôi cảm thấy điều này có thể dẫn đến một câu hỏi về cơ sở dữ liệu, nhưng tôi cảm thấy đủ liên quan đến GIS mà tôi cảm thấy thoải mái khi đăng nó ở đây. Dù vậy, tôi sẽ rất vui khi mang nó đi nơi khác nếu nó thuộc về nơi đó!

Tôi đã bắt đầu cuộc hành trình đầy gian nan để thu thập dữ liệu OSM để hoạt động ở định dạng RDBMS hữu ích với tôi. Một trong những vấn đề chính mà tôi đang gặp phải là kiểu dữ liệu của hstore. Mặc dù nó khá hữu ích để có thể chứa một từ điển giá trị cực lớn, nhưng chúng khó có thể "hiểu được", theo kinh nghiệm của tôi. Cụ thể, các công cụ osm2pgsql tạo addr:flats, addr:housenumberaddr:interpolationcác lĩnh vực, nhưng lá ra một số đó là khá rõ ràng với tôi, chẳng hạn như thành phố, mã bưu điện, và đường phố. Tôi muốn phân tích dữ liệu này để điền vào các cột mới với nó. Những phương pháp bạn muốn giới thiệu để truy cập dữ liệu đó?

Cảm ơn

Câu trả lời:


7

Bạn có thể chuyển dữ liệu khóa / giá trị của cửa hàng mong muốn sang các cột mới:
1-Tạo các cột mong muốn (ví dụ: addres, city, key1, key2, keyn)
2-Run:

UPDATE table 
SET 
address=hstorecolumn->'address',
city=hstorecolumn->'city',
key1=hstorecolumn->'key1',
key2=hstorecolumn->'key2',
keyn=hstorecolumn->'keyn';

Hoặc đơn giản là bạn có thể quen với hstore, nó hoạt động khá tốt và tôi có rất nhiều kết quả tốt với nó đến mức tôi có thể nói IMO "hstore đã thay đổi cuộc đời tôi". cười lớn

EDIT:
Một ví dụ về cách sử dụng hstore:
SELECT
streetdatatable.hstoredatacolumn -> 'address',
streetdatatable.hstoredatacolumn -> 'city'
FROM someschema. streetdatatable

Nó sẽ cho bạn thấy tất cả các giá trị địa chỉ và thành phố.


Tôi yêu hstore như một kiểu dữ liệu (từ điển là người bạn tốt nhất của bạn), nhưng nó không chơi tốt với ESRI, vì vậy các kiểu dữ liệu cột cũ thông thường sẽ phải làm.
Nathanus

Điều này có vẻ giống như chính xác những gì tôi đang tìm kiếm, nhưng tôi sẽ thay thế hstorecolumnbằng gì? Ngoài ra, trong DB của tôi, các cặp khóa-giá trị được nối với =>, không ->. Có vấn đề này?
Nathanus

hi, hstorecolumn là tên của cột có dữ liệu của hstore. -> là ký hiệu để gọi một giá trị từ một khóa trong hstore, theo cách này: cột -> 'key' và nó trả về giá trị, oh, bạn cần báo giá đơn. Tôi đang chỉnh sửa câu trả lời với một ví dụ khác.
Pablo

Điều đó có ý nghĩa hơn nhiều. Cảm ơn bạn đã làm rõ.
Nathanus
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.