Python hay R tốt hơn cho GIS?

Một yếu tố thiết yếu trong việc thiết kế nhiều hệ thống không gian địa lý là lựa chọn sử dụng ngôn ngữ lập trình (hoặc nhiều ngôn ngữ). Hầu hết các dự án thú vị mà chúng ta có thể hình dung sẽ liên quan đến ít nhất một số chương trình để tùy chỉnh các công cụ hiện có hoặc phát triển những công cụ hoàn toàn mới

Có rất nhiều ngôn ngữ lập trình đáng kinh ngạc hữu ích cho các chuyên gia không gian địa lý ngày nay. Wikipedia liệt kê hơn 600 ngôn ngữ, loại trừ các phương ngữ đa dạng của Byzantine về BASIC trong quá khứ và hiện tại

Đặc trưng ngôn ngữ lập trình

Một phương tiện quan trọng để mô tả các ngôn ngữ lập trình là theo các hệ thống kiểu của chúng, nghĩa là các quy tắc mà theo đó người ta có thể gán ý nghĩa cho các biến hoặc đối tượng. Một sự phân chia cơ bản là giữa gõ tĩnh và gõ động. Các ngôn ngữ được nhập tĩnh như C, C++, C# và Java đánh giá thông tin loại tại thời điểm biên dịch và từ chối mã không đúng định dạng. Ưu điểm của điều này là nhiều lỗi có thể được phát hiện tại thời điểm biên dịch thay vì thời gian chạy và các lỗi có thể được phát hiện/sửa trước đó trong quá trình. Nhược điểm của kiểu gõ tĩnh là nó làm cho mã dài dòng hơn và đôi khi bạn có thể mất nhiều thời gian để "làm hài lòng trình biên dịch". " Các ngôn ngữ được nhập động như Python, JavaScript, PHP và Ruby trì hoãn việc kiểm tra loại cho đến thời gian chạy. Do đó, bạn thường không phải chỉ định loại biến trước khi sử dụng nó. Ưu điểm của gõ động là dễ lập trình;

Ngôn ngữ lập trình phổ biến được sử dụng với GIS

Ngày nay có rất nhiều ngôn ngữ lập trình được sử dụng và thực sự không có lựa chọn nào là “tốt nhất”. Ở đây chúng tôi tập trung vào những thứ phù hợp nhất với các hệ thống không gian địa lý đương đại. Bảng bên dưới tổng hợp một số danh sách ngôn ngữ gần đây từ năm 2019 và 2018. 3 cột đầu tiên dựa trên khảo sát về việc sử dụng/người dùng và cơ sở đặt hàng cho 3 cột cuối cùng không rõ ràng. Chỉ một trong các danh sách (từ GoGeomatics), dành riêng cho GIS và danh sách đó đại diện cho ý kiến ​​của một nhà phát triển duy nhất. Điều quan trọng nhất rút ra từ bảng này là. (1) có nhiều ngôn ngữ phổ biến và ý kiến ​​đa dạng về giá trị tương đối của chúng, và (2) Python, Java và JavaScript nằm trong top 5 trong mọi danh sách, với C++ và C# ở 5 trên 6 danh sách, PHP ở 4 trên 6 . Đối với những người quan tâm đến xu hướng theo thời gian về mức độ phổ biến của ngôn ngữ lập trình, hãy xem mốc thời gian Chỉ mục cộng đồng lập trình TIOBE năm 2002 hiện tại

Ngôn ngữ lập trình phổ biến trong ngành không gian địa lý

Xếp hạng Business Insider - xếp hạng dựa trên Khảo sát thành viên GitHubIEEE (2018)Khảo sát nhà phát triển Stack Overflow (2019)GoGeomatices. Top Languages ​​in the GIS WorldFull Stack Academy (9 best to learn)Women Who Code1JavaScriptPythonJavaScriptPythonJavaScriptPython2JavaC++HTML/CSSJavaScriptSwiftJava3PythonJavaSQLRJavaJavaScript4PHPC#PythonSQLC/C++Rust5C++RJavaJavaPythonKotlin6C#PHPBash/ShellC/C++PHP_7TypeScriptJavaScriptC#C#Ruby_8ShellGoPHP-C#-9CAssemblyC++-

Dưới đây, chúng tôi cung cấp một mô tả ngắn gọn về các ngôn ngữ lập trình xuất hiện trên hai hoặc nhiều danh sách. Nhóm đầu tiên (theo thứ tự bảng chữ cái) là những nhóm hiển thị trên 5 danh sách trở lên, do đó, những nhóm này thường phổ biến nhất trong phạm vi các nhà phát triển. Sau đó (cũng theo thứ tự bảng chữ cái), chúng tôi phác thảo các tính năng chính của những tính năng hiển thị trên ít danh sách hơn (nhưng ít nhất là 2). Những mô tả này được theo sau bởi một viễn cảnh về việc đưa ra các lựa chọn ngôn ngữ dành riêng cho ứng dụng phù hợp với các nhiệm vụ phát triển GIS (và không gian địa lý khác) cụ thể

Nếu bạn thấy bất kỳ ngôn ngữ nào mà bạn cảm thấy phù hợp với GIS nhưng lại bị thiếu ở đây hoặc bạn có các ví dụ hay về ứng dụng không gian địa lý hiệu quả tận dụng bất kỳ ngôn ngữ nào, vui lòng chỉ ra bằng cách đưa ra nhận xét trong Diễn đàn thảo luận về các câu hỏi chung về Canvas

Ngôn ngữ lập trình phổ biến

  1. Python — Python ngày nay rất phổ biến và là ngôn ngữ kịch bản chính được sử dụng trong cả ArcGIS và QGIS. Python thường được coi là một ngôn ngữ "keo dính" tốt và nói chung nó rất dễ làm việc với. Nó có nhiều tiện ích mở rộng, chẳng hạn như SciPython và Numerical Python.  
  2. JavaScript — JavaScript là công cụ dẫn đầu hiện tại về Giao diện người dùng trong các ứng dụng web. Google Maps sử dụng nhiều JavaScript, API ArcGIS của Esri dành cho JavaScript hỗ trợ phát triển bản đồ web và các ứng dụng bản đồ web nguồn mở hàng đầu (OpenLayers, Mapbox GL JS) cũng dựa trên JavaScript. D3 là một thư viện trực quan hóa web rất phổ biến làm nền tảng cho khá nhiều bản đồ web tương tác mà bạn thấy ngày nay
  3. C# — C# là câu trả lời của Microsoft cho Java (xem bên dưới) và là ngôn ngữ lập trình hàng đầu cho. MẠNG LƯỚI. Vì vậy, nếu bạn đang bắt đầu viết một tiện ích bổ sung mới cho ArcGIS bằng. NET SDK, bạn sẽ làm việc trong C#
  4. C++ — C++ là ngôn ngữ lập trình đa năng (có nguồn gốc từ C), với cả các tính năng hướng đối tượng và thủ tục, thường được sử dụng trong các hệ thống nhúng. Được phát triển vào năm 1985, mức độ phổ biến của nó đã giảm dần kể từ khoảng năm 2004 (có thể do đường cong học tập dốc và độ phức tạp chung), nhưng nó vẫn giữ được một phần đáng kể trong các dự án. Nhiều ứng dụng phần mềm bạn sử dụng hàng ngày được viết bằng C++ hoặc sử dụng C++ cho ít nhất một phần của quá trình triển khai (ArcGIS, Windows OS, Firefox, MS Office, v.v. , vân vân. ), vì vậy nó sẽ không sớm biến mất
  5. Java — Java vẫn là một lựa chọn phổ biến, mặc dù mức độ phổ biến của nó đang giảm dần theo hầu hết các biện pháp qua từng năm. Ví dụ, Java được sử dụng trong các dự án GeoServer và Java Topology Suite (JTS)

Các ngôn ngữ lập trình quan trọng khác

  1. C — C là anh cả trong gia đình. Khi bạn cần hiệu suất cao nhất, bạn sử dụng C, vì nó "gần với kim loại. " Điều này thật tuyệt nếu bạn cần viết mã trình điều khiển thiết bị, nhưng không tuyệt lắm nếu bạn cần tạo một ứng dụng web. Nhiều dự án GIS mã nguồn mở được viết bằng C. Ví dụ: GDAL (Thư viện trừu tượng dữ liệu không gian địa lý) được viết bằng sự kết hợp giữa C và C++
  2. PHP — PHP là một trong những cách tốt nhất để xây dựng một trang web tương tác và do đó, nó khá phổ biến
  3. R và S — R và S là các ngôn ngữ thống kê kịch bản với nhiều thống kê không gian rất tinh vi có thể sử dụng một số kết quả đầu ra từ ArcGIS. Ngoài ra, bản thân nó có nhiều phần mở rộng không gian cho R hỗ trợ nhiều khả năng không gian địa lý (e. g. , hiểu. Chế độ xem tác vụ CRAN. Phân tích dữ liệu không gian, Khoa học dữ liệu không gian với R và r-spatial
  4. Ruby — Ruby là một ngôn ngữ cũ đã trở nên phổ biến hơn trong thời gian gần đây. Ruby có lực kéo lớn nhờ Ruby on Rails, giúp dễ dàng thiết lập ứng dụng dựa trên cơ sở dữ liệu. Điều này đã được GeoCommons mở rộng sang các bản đồ web. Một số trang web địa lý thú vị khác như OpenStreetMap và WeoGeo sử dụng Ruby
  5. Rust — Rust là một ngôn ngữ mã nguồn mở được hỗ trợ bởi các nhà phát triển với Mozilla Foundation. Về mặt khái niệm, nó liên quan đến C++, nhưng được thiết kế để an toàn hơn trước các mối đe dọa bảo mật. Những người phụ nữ viết mã cho biết Rust có “rất nhiều hứa hẹn cho công cụ trò chơi, công cụ mô phỏng VR, bộ điều khiển VR”, do đó, khi VR dựa trên GIS phát triển hơn, Rust có thể trở nên phổ biến hơn trong cộng đồng của chúng tôi
  6. Shell — Shell là ngôn ngữ kịch bản để sử dụng trong môi trường Unix (và Linux và Mac OS). Nó cho phép người dùng xâu chuỗi các lệnh Unix lại với nhau, yêu cầu hệ thống thực thi chúng như một sự kiện. Để biết một ví dụ về cách sử dụng Shell với GIS, hãy xem hướng dẫn này để biết Shell scripting với GRASS GIS
  7. SQL — SQL được sử dụng làm ngôn ngữ kiểm soát và truy cập cơ sở dữ liệu. SQL là trung tâm của nhiều hoạt động GIS. SQL là một ví dụ tuyệt vời về một ngôn ngữ đã tồn tại trong một thời gian dài. Nó đã tồn tại quá lâu bởi vì nó là khai báo thay vì thủ tục. Nghĩa là, các câu lệnh SQL cho biết bạn muốn điều gì xảy ra, chứ không phải bạn muốn nó xảy ra như thế nào. Do đó, các chi tiết triển khai được ẩn và có thể thay đổi theo thời gian. Điều này có nghĩa là SQL được thiết lập để duy trì sự phù hợp trong thế giới điện toán đám mây mà chúng ta sẽ thảo luận trong xu hướng công nghệ của tuần này
  8. TypeScript — TypeScript là một ngôn ngữ lập trình hướng đối tượng, là siêu tập hợp của JavaScript. Nó đã được mô tả là "JavaScript có quy mô". Giống như JavaScript, có hỗ trợ sử dụng TypeScript với API ArcGIS for JavaScript và API JavaScript của Google Maps. Ngoài ra còn có hỗ trợ cho TypeScript với Bing Maps SDK và để sử dụng Tờ rơi trong TypeScript, trong số những thứ khác

Đưa ra các lựa chọn phụ thuộc vào ứng dụng

Nhiều dự án GIS tận dụng nhiều hơn một trong các ngôn ngữ được nêu chi tiết ở trên. Điều này là do các tác vụ khác nhau trong GIS được một số ngôn ngữ hỗ trợ tốt hơn các ngôn ngữ khác. Mặc dù các nhà phát triển khác nhau có ý kiến ​​khác nhau về sự phù hợp nhất giữa các ngôn ngữ với các nhiệm vụ, nhưng một danh sách Ngôn ngữ nhiệm vụ đáng xem (dành riêng cho công việc liên quan đến GIS) được Florin-Daniel Cioloboc sản xuất vào năm 2016

Ngôn ngữ lập trình nào là tốt nhất cho GIS?

Python đã là ngôn ngữ tiêu chuẩn trong GIS vì Esri và nguồn mở có xu hướng hướng về ngôn ngữ này. Nếu bạn chưa quen với lập trình GIS, chúng tôi khuyên bạn nên học Python trước vì nó rất được ưa chuộng.

Tôi nên chọn R hay Python?

Nếu bạn đam mê tính toán thống kê và các phần trực quan hóa dữ liệu của phân tích dữ liệu, thì R có thể phù hợp với bạn . Mặt khác, nếu bạn muốn trở thành một nhà khoa học dữ liệu và làm việc với dữ liệu lớn, trí tuệ nhân tạo và các thuật toán học sâu, thì Python sẽ phù hợp hơn.

R có tốt cho phân tích không gian không?

R là ngôn ngữ lập trình và môi trường phần mềm được sử dụng rộng rãi cho khoa học dữ liệu. R cũng cung cấp các cơ hội tuyệt vời để phân tích dữ liệu không gian và lập mô hình không gian .