Bộ kỹ năng phát triển Web GIS [đã đóng]


12

Những công nghệ và bộ kỹ năng nào mà một người muốn thực hiện nghiên cứu / phát triển web GIS?

Xin vui lòng một kỹ năng / công nghệ cho mỗi câu trả lời.


4
Nói về một câu hỏi rộng ... bạn có thể thu hẹp nó thành một ngăn xếp phần mềm cụ thể không? Esri? THẾ NÀO? Chỉ cần tìm kiếm để làm google / điểm dữ liệu mashup?
Derek Swingley

Lỗi của tôi. ESRI hoặc FOSS, không thể có cả hai? Một cái gì đó phức tạp hơn mashup điểm tôi hy vọng. Đủ kỹ năng để làm một cái gì đó như thế này. opengeohost.com/maps/stlawrence
RK

1
Câu hỏi tuyệt vời. Chúng ta hãy có một kỹ năng cho mỗi câu trả lời.
Adam Matan

Cảm ơn. Ý tưởng tuyệt vời. Tôi có nên đăng nó lên câu hỏi? Tôi chỉ nhận ra rằng câu hỏi có thể rộng. Nó sẽ tốt hơn như là một wiki cộng đồng?
RK

Câu trả lời:


17

Tôi có thể nói với bạn về trải nghiệm của tôi, khởi đầu là một nhà địa lý đơn giản, cố gắng sử dụng các sản phẩm GIS để phân tích không gian.

Như tôi đã nói, tôi là một nhà địa lý học, và từ khi bắt đầu học đại học, tôi đã bắt đầu làm việc với GIS như một người dùng. Sau đó, tôi bắt đầu nghiên cứu về cách tự động hóa các nhiệm vụ tẻ nhạt mà tôi phải làm thường xuyên. Đó là niềm đam mê và sau 3 năm, tôi được một nhà phần mềm đa quốc gia làm việc với nhiều hệ thống GIS và phát triển các giải pháp tùy chỉnh.

Các bước của tôi là:

  • Tìm hiểu kỹ về GIS. Đừng bắt đầu học lập trình mà không có quyền cơ bản. Dự đoán và biến đổi, phân tích không gian, sự khác biệt giữa mô hình raster và vector, v.v.

  • Tìm hiểu các nguyên tắc cơ bản của cơ sở dữ liệu: Giới thiệu về Hệ thống cơ sở dữ liệu , Nguyên tắc cơ bản của Hệ thống cơ sở dữ liệu . Hai cuốn sách có một chút khác biệt. Cái thứ nhất nặng về lý thuyết, cái thứ hai có cách tiếp cận thực tế hơn.

  • Tìm hiểu SQL. Đây thực sự là một phần thứ hai để đầu tiên. Nó sẽ giúp bạn rất nhiều nếu bạn bắt đầu suy nghĩ theo cách "sqlish". SQL thay đổi từ nhà cung cấp sang nhà cung cấp. Tôi có thể giới thiệu cho bạn với PostgreSQL, nhà cung cấp tuân theo tiêu chuẩn nhất. Nếu bạn cần học các phương ngữ cụ thể, hãy làm nó sau, khi bạn thực sự cần nó.

  • Lập trình hướng đối tượng. Có vẻ như là một thách thức, nhưng nó khá dễ dàng một khi bạn nắm được những điều cơ bản. Chọn một ngôn ngữ dễ dàng để làm điều đó. Python là một trong những dễ dàng nhất. Học Python là một điểm khởi đầu tuyệt vời. Có những cuốn sách Python nguồn mở / miễn phí, như Lặn vào Python . Sau Python, các lựa chọn thú vị là: .NET, Java và C / C ++.

  • Học lập trình. Đọc mã, viết mã. Đọc mã không gian địa lý. Viết mã không gian địa lý. Nghiên cứu các API cổ điển: GEOS, JTS, GDAL, ArcObjects (nếu bạn là người hâm mộ ESRI - và đó là một điểm cộng lớn trên thị trường), v.v.

    - Lấy một vấn đề không gian địa lý và viết mã để giải quyết nó. Tôi không thể nhấn mạnh điều này hữu ích như thế nào. Điều này sẽ khiến bạn phát điên, nhưng đó là một cách rất tốt để xác nhận rằng bạn đã học được khía cạnh lập trình và để đảm bảo các kỹ năng không gian địa lý của bạn được cập nhật. Trong trường hợp của tôi, tôi đã viết một ứng dụng PostgreQuery nhỏ cho các vụ tai nạn giao thông mã địa lý.

  • Tiếp tục học. Tiêu chuẩn OGC là một lựa chọn tốt đẹp ở đây.


4

Biết cách của bạn xung quanh cơ sở dữ liệu. Bất kỳ nhà phát triển GIS nào cũng sẽ sử dụng chúng rộng rãi.

Đáng chú ý nhất:

  • DBMSMô hình quan hệ . Những môn học này rất quan trọng để hiểu những điều cơ bản về lưu trữ dữ liệu.
  • Ít nhất một giải pháp DB DB . Tôi thích PostGIS , nhưng giải pháp khác cũng tồn tại .
  • Kiến thức tốt về SQL và GIS SQL : Cách trích xuất, chèn, sắp xếp và thao tác dữ liệu hiệu quả.
  • Sự đánh đổi DB cổ điển : Làm thế nào để các hoạt động khác nhau ảnh hưởng đến Bộ nhớ, Dung lượng đĩa, CPU và việc sử dụng mạng.
  • Lập chỉ mục. Điều này đủ quan trọng cho một viên đạn riêng biệt, bởi vì DB Lacuna phổ biến nhất trong số những người mới bắt đầu.
  • Một số kiến ​​thức về phân cụm và khả năng mở rộng .
  • Kiến thức cơ bản về NOSQL .

Ngay cả khi bạn không sử dụng cơ sở dữ liệu, bạn vẫn đang sử dụng dữ liệu - và nói chung là đặt cược an toàn rằng SQL (hoặc một trong những người anh em họ của nó) sẽ được sử dụng để truy vấn dữ liệu.
bộ

Tôi đồng ý rằng tất cả những điều trên là những điều tốt để biết, nhưng chúng có đứng đầu danh sách liên quan đến phát triển WEB không?
Simon

CQL thì sao? Có cần thiết quá không?
RK

1
@simon - Khả năng DB không đủ là một trong những vấn đề phổ biến nhất trong số các nhà phát triển GIS. IMHO nó là một trong những kỹ năng quan trọng nhất (cùng với HTML / CSS, JavaScript và kết xuất bản đồ). @rk - CQL?
Adam Matan

Ngôn ngữ truy vấn chung? Tôi đã gặp nó một lần khi làm việc với GeoServer.
RK

3

Giả sử bạn đã có mặt của các vấn đề về GIS (nguyên tắc bản đồ, v.v.), trước tiên tôi sẽ thực hiện một chuyến đi đến http://www.w3schools.com/ - Chạy qua các hướng dẫn về HTML, Javascript, XML, v.v.

Sau đó, bạn có một số nền tảng khác nhau để lựa chọn. Tôi hơi thiên vị về ESRI và tôi khuyên bạn nên bắt đầu bằng cách chơi về các API http://resource.arcgis.com/content/web/web-apis - Chạy qua các khái niệm / mẫu cho bạn cảm giác thực sự về những gì bạn có thể đạt được
Tôi thấy việc tải xuống các mẫu mã và thiết kế ngược chúng để làm việc với các dịch vụ của riêng bạn (giả sử bạn có một phiên bản của ArcGIS Server, nếu không bạn có thể sử dụng các máy chủ mẫu ESRI) là một cách tốt để tìm hiểu.

Ngoài ra còn có rất nhiều video, hãy xem video hội nghị này để giới thiệu Tổng quan về API ArcGIS cho JavaScript, Thực tiễn tốt nhất để thiết kế dịch vụ bản đồ hiệu quả, thiết kế lại ứng dụng máy tính để bàn cho web và sử dụng API REST của máy chủ ArcGIS.

Bạn sẽ chọn nền tảng web nào? Id bỏ qua việc nhìn vào WebADF (Java / NET) vì điều này sẽ được loại bỏ.

Khách hàng của bạn là ai họ sẽ sử dụng trình duyệt nào? Họ có thể cài đặt plugin Silverlight hoặc Flash không? Bạn có IDE nào để phát triển không? ví dụ: Flex là tốt nhất trong FlashBuilder ($$) nhưng bạn cũng có thể sử dụng FlashDevelop, một giải pháp thay thế nguồn mở.

Bạn có thoải mái hơn với các công nghệ đã được thiết lập hoặc các công nghệ mới nổi? Cân nhắc những rủi ro.
- .NET / Java đã có từ rất lâu - Silverlight & Flex còn khá mới và có một số tranh luận về việc HTML 5 sẽ xóa sạch các nền tảng này hay không

Cả Silverlight và Flex đều có tính tương tác cao hơn, trong đó Javascript tạo ra khoảng trống này bằng cách dựa vào Dojo.Framework.

Sự khác biệt lớn về chức năng giữa Web ADF và API Web là thực tế là API Web ArcGIS hoàn toàn ở phía khách hàng.

Tôi sẽ để người khác đưa ra câu trả lời ít ESRI hơn, nhưng lựa chọn rõ ràng là bắt đầu chơi với API Google Maps - Có rất nhiều tài nguyên / hướng dẫn để tìm hiểu điều này.


Ồ Cảm ơn về tổng quan: DI nghiêng một chút về FOSS mặc dù tôi đang ở một quốc gia thuộc thế giới thứ ba và các sản phẩm ESRI nằm ngoài tầm với của hầu hết mọi người ở đây.
RK

Lưu ý rằng API Web ArcGIS (và nhiều API khác) thực hiện hầu hết quá trình xử lý của chúng ở phía máy khách, nhưng tất cả đều phụ thuộc rất nhiều vào các dịch vụ được xuất bản và / hoặc xử lý ở phía máy chủ. Vì vậy, nếu bạn muốn làm nhiều việc ngoài việc lắp ráp các tài nguyên hiện có (ví dụ: xử lý địa lý), bạn có thể phải điều tra các công nghệ phía máy chủ hoặc thực hiện một số nghiên cứu lớn để tìm ra cách thực hiện ở phía máy khách.
mwalker

Lưu ý Điều tra ngăn xếp địa lý mở ngay bây giờ.
RK

3

Javascript, HTML DOM, CSS, HTTP

Nếu bạn thành thạo những thứ này, bạn có thể làm bất cứ điều gì trên web. Thêm các API đẹp như SVG có thể sẽ giúp việc này dễ dàng hơn và các ứng dụng web của bạn đẹp hơn, nhưng IMO bạn sẽ không bao giờ có thể hoàn toàn hiểu được bốn điều được liệt kê ở trên.


Javascript, HTML DOM, CSS, HTTP Có thứ tự cụ thể nào mà tôi nên tìm hiểu chúng không? :)
RK

2
Tôi muốn đề xuất thứ tự sau: HTML, CSS, HTTP, DOM, JavaScript, thêm vào PHP và hoặc Python / Ruby cho kịch bản phía máy chủ.
underdark

3

Giả sử rằng bạn đã quản lý để sắp xếp DB và máy chủ bản đồ không gian của mình [được mô tả trong các câu trả lời khác ở đây] và tìm hiểu kiến ​​thức về HTML, CSS và JavaScript, bạn có thể bắt đầu mày mò các thư viện máy khách sẽ sử dụng và hiển thị các thành phần bản đồ trong trình duyệt web của người dùng.

OpenLayers dường như là thư viện được sử dụng và tham khảo nhiều nhất. Nó có tài liệu và ví dụ khá tốt, và bạn có thể tìm thấy một số hướng dẫn, ví dụ ở đây . Các trang BostonGIS cũng sẽ hữu ích cho bạn ở đây, không chỉ cho các công cụ OpenLayers.

Tùy thuộc vào kiến ​​thức / sự sẵn lòng của bạn để tìm hiểu Python MapFish là giải pháp rất duyên dáng. Hoặc bạn có thể đi sâu vào GeoDjango , tuy nhiên tôi không thể tự nhận xét nhiều về giải pháp này.

Ngoài ra, bạn có thể xem các giải pháp lập bản đồ web OSGeo , chuyển sang Flash hoặc sử dụng một cái gì đó thương mại như API Web ESRI .


3

Tôi đồng ý với Adam rằng DB và SQL không gian phải là điểm khởi đầu.

Sau đó, có thể đáng để xem xét tầng thứ hai của geostack web trong tương lai của bạn . Bạn sẽ cần một cái gì đó để hoạt động như một cây cầu 'phục vụ' dữ liệu của bạn từ DB không gian đến máy khách trong trình duyệt của người dùng.

Hãy chắc chắn rằng bạn hiểu các khái niệm WFSWMS .

Cài đặt và bắt đầu chơi cục bộ với máy chủ của riêng bạn. Hai dự án nổi tiếng được tổ chức bởi Quỹ không gian địa lý nguồn mởGeoServerMapServer . Máy chủ bản đồ QGIS có thể cũng đáng xem. Máy chủ ArcGIS sẽ là [tốn kém!] Tương đương thương mại ở đây.

Khi bạn sắp xếp phần này, bạn có thể bắt đầu chơi với các thư viện máy khách.


2

Mapnik hoặc bất kỳ công cụ kết xuất bản đồ nào khác để tạo các ô bản đồ.

Hầu như bất kỳ nhà phát triển web GIS nào cũng cần sử dụng các công cụ kết xuất bản đồ hoặc ít nhất là hiểu các khái niệm cơ bản của các lớp và gạch.


Cảm ơn. Tôi nghĩ rằng tôi hiểu các lớp và gạch tốt. Đó là phần dựng hình mà tôi gặp rắc rối.
RK

2

Biết hệ điều hành máy chủ của bạn, máy chủ web của bạn (IIS, Apache, bất cứ điều gì) và cách bảo mật công cụ của bạn - ngay cả khi ai đó đang làm tất cả cho bạn.


2

Bạn có thể làm việc thông qua khóa học của tôi (https://www.e-education.psu.edu/geog585/) mà (tôi nghĩ) đưa ra một giới thiệu tốt và sẽ giúp bạn bắt đầu và chạy.


1

Tôi không thể nhấn mạnh đủ thứ hai đến bình luận cuối cùng của George. Chọn một vấn đề không gian địa lý và / hoặc Web mà bạn quan tâm và tìm hiểu về các công nghệ cần thiết khi bạn giải quyết nó.

Nếu bạn dành thời gian để trở nên thành thạo trong tất cả các lĩnh vực được liệt kê ở trên, nó sẽ là mãi mãi trước khi bạn thực sự bắt đầu xây dựng một dự án giúp gãi ngứa.

Tôi sẽ đề nghị bắt đầu với việc xây dựng một ứng dụng bằng OpenLayers để xây dựng một ứng dụng ánh xạ dữ liệu từ một số dịch vụ dữ liệu hiện có. Sau đó, bạn có thể chuyển sang tạo nguồn dữ liệu hoặc dịch vụ của riêng mình. Nếu bạn gắn bó với các công nghệ FLOSS, bạn sẽ có thể xây dựng và sử dụng các ứng dụng của mình ở bất cứ đâu mà không phải trả phí.

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.