Tìm kiếm các lựa chọn thay thế cho pgRouting để phân tích mạng / định tuyến nguồn mở?


35

Tôi đã tự hỏi nếu có bất kỳ thay thế cho các công cụ pgRouting .

Suy nghĩ về nó một chút, tôi nghĩ cách thay thế duy nhất là sử dụng R hoặc RPY để phân tích.

Về cơ bản, tôi đang cố gắng giải quyết các vấn đề định tuyến dựa trên cơ sở dữ liệu nonPostGIS. Vì hầu hết dữ liệu của tôi thực sự được lưu trữ ở một định dạng khác nhau; tuy nhiên, nó không khó để chuyển đổi. Tôi thấy rằng việc chuyển sang bộ não ngớ ngẩn của tôi rất khó thực hiện. Vì vậy, có lẽ một giải pháp phi cơ sở dữ liệu mà tôi có thể dễ dàng điều chỉnh sẽ là lý tưởng cho tôi

Câu trả lời:


21

[Chỉnh sửa: cái này đã được thay thế bởi nx_spatial có sẵn từ pypi (easy_install nx_spatial). Nhập shapefiles hiện là tiêu chuẩn trong mạngx 1.4 ]

Tôi đã loại thất vọng bởi sự thiếu công cụ mạng hình học bằng Python GP API ESRI, vì vậy tôi đã viết lên một cái gì đó mà tải tập tin hình dạng và lớp Feature vào networkx đồ thị định hướng (chữ ghép).

Đây vẫn là một công việc đang tiến triển, nhưng nó có thể là một điểm khởi đầu ổn cho một cái gì đó có thể giúp đỡ với vấn đề của bạn.

http://bitbucket.org/gallipoli/utilitynetwork/

Mẫu:

from utilitynetwork import Network

net = Network()

#load single file, method reqs OGR
net.loadshp("/shapefiles/test.shp")

#load directory full of shapefiles
net.loadshp("/shapefiles")

#load a feature class, req ESRI gp object, should work with shps as well
import arcgisscripting
gp = arcgisscripting.create(9.3)
net.loadfc("C:\somedb.gdb\featureclass", gp)

#Accessing node/edge data is done by the key value (the geometry as a tuple).
#access node data at x=4, y=2
nodekey = (4, 2)
net.node[nodekey]

Mạng được kế thừa từ networkx.DiGraph, vì vậy tất cả các chức năng đó đều khả dụng.



5

Flowmap , một gói GIS thích hợp được thiết kế để xử lý các vấn đề phân tích mạng.

Nếu bạn có trường hợp sử dụng khá đơn giản, Bộ điều hướng lượng tử dựa trên QGIS có thể thực hiện thủ thuật.

GRASS cũng hỗ trợ phân tích mạng , mặc dù nó có thể không đáng để ma sát khi thiết lập mọi thứ bên trong môi trường.


4

Nếu bạn đang tìm kiếm một giải pháp pythonic có lập trình, hãy xem mạngx


Bất kỳ thư viện để đi từ .shpmạngx? Tôi có thể tự xây dựng một cái bằng Python, nhưng tôi sẽ không phát minh lại bánh xe ...
đánh dấu

4
Nó không chính xác là trận đấu 1: 1 vì shapefiles lưu trữ dữ liệu dưới dạng các tính năng đơn giản, không phải mạng cấu trúc liên kết. Vì vậy, trước tiên bạn cần biết / giả sử một số điều về bộ dữ liệu nguồn của mình - chủ yếu là tất cả các giao điểm là các nút đầu cuối cho một dòng. Dưới đây là một ví dụ về việc sử dụng geodjango để chuyển đổi các tính năng đơn giản thành biểu đồ Networkx: code.google.com/p/marinemap/source/browse/lingcod/spaces/
Lỗi

3

Bạn có thể xem xét dự án GraphHopper nguồn mở - một công cụ lập kế hoạch tuyến nhanh và linh hoạt. Hãy thử nó ở đây . Lưu ý: Tôi là tác giả


Tôi đang chứng nhận cho GraphHopper vì nó rất đơn giản để thiết lập và sử dụng.
bugmenot123


2

Bạn cũng có thể xem qua các công cụ từ RouteWare . Hồ sơ theo dõi dài và không ràng buộc cơ sở dữ liệu


2

Chúng tôi cũng đã thực hiện một số nghiên cứu trong những năm qua nhưng chúng tôi vẫn hài lòng với pgRouting và nghĩ rằng đó là giải pháp tốt nhất cho nhu cầu Định tuyến GIS của chúng tôi. Thật không may, không có nhiều xung quanh mà tôi biết (mà không phải trả hàng ngàn Euro / đô la). Chúng tôi làm việc với Navtech -Data, có một mạng lưới hoàn hảo để làm việc nhưng không hề rẻ. Thỉnh thoảng chúng tôi cũng đã thử với OSM, nó hoạt động tốt ... nhưng luôn gây ra một số vấn đề và do đó không bao giờ được đưa vào sản xuất.

Chúng tôi cũng vừa xem qua dự án GraphHopper mã nguồn mở đã đề cập ở trên (một vài tuần trước) và nghĩ rằng nó có hiệu năng rất tốt không có khả năng. Theo như tôi biết - họ cũng có Dữ liệu OSM chạy trong dự án của họ.



1

Nhiều vấn đề định tuyến sử dụng thuật toán của Dijkstra để xác định đường đi ngắn nhất. Mã tương đối đơn giản: http://en.wikipedia.org/wiki/Dijkstra%27s_alacticm

Ngoài ra, Guido van Rossum đã viết một bài luận sớm về đồ thị bằng Python. Tác phẩm ngắn của anh ấy bao gồm một cách tiếp cận cho các cấu trúc dữ liệu tuyến đường nguyên thủy và mã hóa: http://www.python.org/doc/essays/graphs.html

Có rất nhiều gói định tuyến ngoài kia. Đối với các mục đích địa lý cụ thể, ngoài pgRouting, graphserver (http://bmander.github.com/graphserver/) và ESRI ArcGIS Network Analyst xuất hiện trong tâm trí. Cộng đồng phân tích mạng xã hội có một danh sách các phần mềm phân tích biểu đồ tại: http://www.insna.org/software/index.htmlhttp://www.insna.org/software/software_old.html . Nhiều trong số các gói đó là nguồn mở và có liên quan trong bối cảnh địa lý. Đối với các tính toán rất phức tạp, mạnh mẽ hoặc phức tạp, các gói lập trình tuyến tính như CPLEX và Lindo Lingo có thể đáng để nghiên cứu.


vấn đề là hầu hết các giải pháp này đều cần một hệ thống các nút và liên kết, và dữ liệu GIS thường không được lưu trữ theo cách đó
dassouki

1
Nhà phân tích mạng là khoảng 2.500 đô la và không thực sự quan tâm đến việc mua hàng như vậy ngay bây giờ. Tôi muốn có một giải pháp pythonic
dassouki

2
Dijjkstra dành cho đồ họa rất cơ bản. Đối với các vấn đề thực tế, thông thường nó là một thuật toán rất nặng và chậm. Ngoài ra, phần mềm ESRI, vì nó không có nguồn mở, rất khó để cải thiện và đang dần bị bỏ lại phía sau để ủng hộ các công cụ khác.
María Arias de Reyna Domínguez

@dassouki tất cả dữ liệu về cơ bản là các nút và liên kết, và các công cụ như osm2pgrouting và các tập lệnh pgRouting khác nói chung, chuyển đổi dữ liệu GIS / không gian hiện tại thành các nút và liên kết và cạnh cần thiết được sử dụng trong pgRouting ...
DPSSpatial


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.