Lấy điểm bắt đầu và điểm kết thúc cho mỗi dòng trong shapefile trong ArcGIS Desktop hoặc QGIS?


15

Tôi có một shapefile vector (polyline) và tôi cần truy xuất từng điểm bắt đầu và điểm kết thúc (các nút) và tạo một shapefile với các điểm này. Sau đó, tôi cần thêm vào bảng thuộc tính đa tuyến, điểm bắt đầu và điểm kết thúc cho mỗi dòng dựa trên ID điểm.

Làm cách nào tôi có thể làm điều đó một cách đơn giản trong ArcGIS Desktop hoặc QGIS?


2
Trong ArcGIS, nếu bạn có giấy phép Nâng cao, bạn có thể sử dụng Hộp công cụ quản lý dữ liệu-> Bộ công cụ tính năng-> Công cụ tính năng điểm đến điểm với tùy chọn Cả hai kết thúc. Tất cả các thuộc tính của dòng được giữ lại. Tuy nhiên, bạn sẽ phải thêm một trường vào lớp tính năng dòng ban đầu của mình và tính ID tính năng trên dòng của bạn để giữ giá trị đó trong các điểm. Nếu bạn có một trường giá trị duy nhất khác trên các dòng của mình, bạn có thể tham gia và tính FID sau khi chạy công cụ. Tùy chọn cuối cùng sẽ liên quan đến việc thực hiện Tham gia không gian với tùy chọn Một đến nhiều và xóa các bản sao có thuộc tính xấu.
Richard Fairhurst

Điều này có trả lời câu hỏi của bạn không? "Làm cách nào để truy xuất tọa độ điểm bắt đầu và điểm cuối bằng Python / arcpy?" gis.stackexchange.com/q/31684/8104
Aaron

Tôi đã thử một cách tiếp cận tương tự nhưng bị lạc đường. Tôi sẽ cố gắng làm lại nó. Điều tốt nhất sẽ là tạo ra một macro thực hiện tất cả công việc này để mọi người có thể thực hiện cùng một quy trình sau đó. Chúc mừng!
dùng51651

Phương pháp @RichardFairhurst, có lẽ cũng nên được đề xuất như một câu trả lời. Đó là cách tôi đã thực hiện nó trong lịch sử
bwp8nt

Câu trả lời:


8

Đó là một lớp lót cho GDAL. Lệnh này tạo một shapefile từ các nút bắt đầu với các thuộc tính được chọn:

ogr2ogr -f "ESRI Shapefile" -dialect sqlite output.shp -sql "select ST_StartPoint(geometry), attribute_1, attribute_2, attribute_3 from input" input.shp

Sử dụng ST_EndPoint cho các điểm cuối.


Cảm ơn bạn rất nhiều! Điều này có thể hoàn thành công việc, nhưng tôi đang tìm kiếm thứ gì đó đơn giản hơn (trực quan) để những người khác không có kỹ năng lập trình có thể thực hiện nhiệm vụ.
dùng51651

Bạn viết lệnh đó ở đâu?
blue_chip

Đến dòng lệnh. Trên Linux sử dụng shell bình thường. Trên Windows sử dụng cửa sổ lệnh nhưng hãy chú ý rằng môi trường của bạn có đường dẫn đúng. Osgeo4w shell thực hiện điều đó tự động.
dùng49584


6

Giải pháp QGIS: Có thể trích xuất các nút bắt đầu và kết thúc (tọa độ) của tệp vectơ dòng, chỉ bằng cách sử dụng xat và yat trong máy tính trường, với các chỉ số tương ứng 0 (bắt đầu) và -1 (kết thúc).

xat(0)    
yat(0)
xat(-1)
yat(-1)

5

Đối với giải pháp ArcGIS, tôi đã tạo một công cụ xử lý địa lý tạo điểm trên các đường.

Bạn có thể tải xuống và xem mã tại đây: Tạo Điểm trên Dòng

Đối với Loại, bạn sẽ muốn chọn ĐIỂM BẮT ĐẦU / KẾT THÚC. Điều này sẽ tạo ra một lớp tính năng điểm mới chứa điểm bắt đầu và điểm kết thúc cho mỗi đa tuyến.

Lớp tính năng điểm đầu ra cũng sẽ có một trường có tên LineOID, ghi lại OID của đa tuyến mà nó được tạo từ đó. Bằng cách đó bạn có thể tham gia dữ liệu thuộc tính của bạn trở lại.

Dưới đây là ảnh chụp màn hình về cách bạn đặt tham số:

nhập mô tả hình ảnh ở đây


Thật tuyệt vời Ian! Tôi sẽ tải xuống và kiểm tra nó và cung cấp cho bạn thông tin phản hồi càng sớm càng tốt. Tôi nghĩ công cụ này sẽ có ích cho những gì tôi cần và sẽ giúp tự động hóa quy trình tốt hơn! Cảm ơn bạn!
dùng51651

Xin chào Ian, Idk tại sao nhưng tôi có thể giúp công cụ của bạn hoạt động trong ArcGIS 10.0 hoặc 10.1 ... Tôi đã thêm nó vào hộp công cụ nhưng nó không ăn trưa ... = /
user51651 18/05/2015

@ user51651 Bạn có nhận được thông báo lỗi không? Nó không hoạt động với 10.0, nhưng nó sẽ hoạt động với 10.1 trở lên. Nếu bạn vào menu Công cụ địa lý, rồi Kết quả. Có tin nhắn nào trong đó không?
ianbroad

3

để thêm tọa độ của các điểm cuối trong bảng thuộc tính, sử dụng ArcGIS, bạn có thể sử dụng máy tính trường (không cần tạo hình học). Nhấp vào tên trường, máy tính trường, sau đó sử dụng cú pháp Python với các dòng đơn bên dưới (ví dụ với tọa độ X):

!shape.firstPoint.X!

!shape.lastPoint.X!

lưu ý rằng mọi thứ đều ở bên trong !!


Đây là một câu trả lời thực sự tốt, tôi đã không nhận ra điều này là có thể. Ảnh chụp nhanh trong Máy tính Trường có thể giúp những người ít quen thuộc hơn với tác vụ. Tôi giả sử bạn có thể làm điều này với các giá trị M là tốt?
bwp8nt

2

Trong QGIS sử dụng công cụ Extract cụ thể Vertices . Đặt các chỉ số Vertex thành 0 để lấy điểm bắt đầu và -1 để lấy điểm cuối hoặc 0, -1 để lấy cả hai.

Trích xuất cụ thể của QGIS

Lưu ý mô tả:

Đỉnh đầu tiên tương ứng với chỉ số là 0, đỉnh thứ hai có chỉ số là 1, v.v. Các chỉ số âm có thể được sử dụng để tìm các đỉnh ở cuối hình học, ví dụ: chỉ số -1 tương ứng với đỉnh cuối cùng, - 2 tương ứng với đỉnh cuối cùng thứ hai, v.v.


1

Trong ArcGIS, nếu bạn có giấy phép Nâng cao, bạn có thể sử dụng Hộp công cụ quản lý dữ liệu-> Bộ công cụ tính năng-> Công cụ tính năng điểm đến điểm với tùy chọn Cả hai kết thúc. Tất cả các thuộc tính của dòng được giữ lại. Tuy nhiên, bạn sẽ phải thêm một trường vào lớp tính năng dòng ban đầu của mình và tính ID tính năng trên dòng của bạn để giữ giá trị đó trong các điểm. Nếu bạn có một trường giá trị duy nhất khác trên các dòng của mình, bạn có thể tham gia và tính toán FID sau khi chạy công cụ. Tùy chọn cuối cùng sẽ liên quan đến việc thực hiện Tham gia không gian với tùy chọn Một đến nhiều và xóa các bản sao có thuộc tính xấu.

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.