Ngiêm cấm sử đụng PROXY và VPS vào mục đích trái pháp luật bạn sẽ phải chịu toàn bộ trách nhiệm trước pháp luật khi sử dụng dịch vụ của chúng tôi tks!
iNaturalist API observations: tọa độ công khai và obscured

iNaturalist API observations: tọa độ công khai và obscured

Chuyên viên Kỹ thuật ProxyVN 04-22-2026 Đang tính... phút đọc

iNaturalist API observations là endpoint trả các quan sát sinh vật do người dùng iNaturalist gửi lên, mỗi quan sát có ID, cấp chất lượng, tọa độ công khai, trạng thái làm mờ vị trí và giấy phép riêng. Bài này viết cho người lấy dữ liệu quan sát theo loài và vùng, cần hiểu tọa độ trả về có thể đã bị làm mờ có chủ đích và không được tìm cách khôi phục. ProxyVN gọi API v1 thật ngày 05/11/2026 cho hai loài tại Việt Nam, một loài phổ biến và một loài cực kỳ nguy cấp, rồi so cách API trả vị trí.

iNaturalist API observations: mục tiêu và phạm vi không lặp

Phần này chốt bài toán, đầu ra và ranh giới với bài GBIF.

Bài toán cần giải

Một nhóm làm bản đồ đa dạng sinh học tải quan sát từ iNaturalist rồi đặt từng điểm lên bản đồ với độ phóng to tối đa. Với loài phổ biến thì không sao. Với loài nguy cấp, mọi điểm đều đã bị làm mờ khoảng ba mươi km, nhưng bản đồ lại hiển thị như vị trí chính xác. Người xem hiểu sai, và có người còn hỏi cách tìm vị trí thật.

Đầu ra nghiệm thu

Đầu ra là bảng observation gồm ID, UUID, quality_grade, taxon ID, ngày quan sát, kinh độ, vĩ độ công khai, chuỗi location, obscured, geoprivacy, taxon_geoprivacy, positional_accuracy, public_positional_accuracy, license_code, giấy phép ảnh, người quan sát. Đi kèm là cột trạng thái vị trí và cột quyền dùng.

Ranh giới với bài GBIF

Bài GBIF occurrence API trong cùng cụm đọc chỉ mục GBIF, nơi bản ghi iNaturalist research-grade chỉ là một nguồn trong nhiều nguồn. Bài này đọc bản ghi gốc trên iNaturalist, có đủ geoprivacy, taxon_geoprivacy và cấp chất lượng mà GBIF không giữ nguyên dạng. Hai nguồn có thể chứa cùng quan sát, nên không cộng số đếm.

Giới hạn của lab

Lab gọi API thật không đăng nhập, nghỉ 1,5 giây giữa các lời gọi, tổng tám lời gọi. Mỗi loài lấy 200 quan sát mới nhất theo ID. Không đăng nhập thì API trả tọa độ công khai, đúng như mọi người dùng ẩn danh thấy. Lab không có và không tìm cách có tọa độ thật của quan sát bị làm mờ.

Ai nên đọc

Người làm bảo tồn, giáo dục môi trường, nghiên cứu sinh thái. Kỹ sư dữ liệu xây bản đồ hay dashboard từ dữ liệu khoa học công dân. Người làm nội dung cần ảnh và quan sát có giấy phép rõ.

Những gì bài không làm

Bài không hướng dẫn tìm vị trí thật của quan sát bị làm mờ, không suy vị trí từ ảnh, từ tên địa điểm hay từ nguồn khác. Bài không dùng API ghi, không dùng tài khoản dự án. Phạm vi là đọc dữ liệu công khai và giữ đúng trạng thái của nó.

Thuật ngữ dùng trong bài

Observation là một quan sát. Quality_grade là cấp chất lượng: research, needs_id, casual. Geoprivacy là lựa chọn của người quan sát: open, obscured, private. Taxon_geoprivacy là mức che do loài nhạy cảm. Obscured cho biết tọa độ công khai đã bị làm mờ. Public_positional_accuracy là độ chính xác mà API công bố cho tọa độ công khai, tính bằng mét.

Vì sao chọn hai loài

Sẻ nhà châu Á là loài phổ biến, sống gần người, không nhạy cảm. Voọc chà vá chân nâu là loài cực kỳ nguy cấp, sống ở rừng miền Trung. Cùng một API, cùng một quốc gia, hai loài cho hai bức tranh vị trí khác hẳn. Nếu chỉ thử một loài phổ biến, người đọc dễ nghĩ mọi tọa độ đều mở.

Lấy observation theo taxon/place và tôn trọng geoprivacy cùng license với iNaturalist API observations

Phần này đi qua các lời gọi tra ID và lời gọi lấy quan sát.

Nguồn tài liệu đã đọc

Giao diện tài liệu của API là trang động, nên brief đọc đặc tả Swagger của iNaturalist API v1. Đặc tả liệt kê /observations với tham số taxon_id, place_id, quality_grade, geoprivacy, per_page, order_by, và các endpoint /taxa, /places/autocomplete, /observations/quality_grades. Lab đối chiếu với response thật.

Tra place_id

Lab gọi /places/autocomplete với q là Vietnam. Kết quả đầu là place 6847, display_name Vietnam, admin_level 0. Kết quả tiếp theo là các địa điểm có chữ Vietnam trong tên ở Hoa Kỳ, ví dụ một khu tưởng niệm. Phải chọn theo admin_level và tên, không lấy kết quả đầu một cách mù quáng.

Tên tiếng Việt và tên khoa học

Tìm /taxa bằng tên khoa học cho kết quả ổn định hơn tên thông thường. Tên tiếng Việt có thể khác nhau giữa vùng, một loài có nhiều tên và một tên chỉ nhiều loài. Lab dùng tên khoa học, lấy kết quả đầu, kiểm rank là species trước khi dùng ID.

Tra taxon_id

Gọi /taxa với q là Passer montanus trả taxon 13851, rank species, không có conservation_status. Gọi với Pygathrix nemaeus, voọc chà vá chân nâu, trả taxon 43517 với conservation_status là cr, tức cực kỳ nguy cấp. Hai loài được chọn để thấy hai cơ chế làm mờ khác nhau.

Đếm theo cấp chất lượng

/observations/quality_grades với taxon và place trả số quan sát theo cấp. Sẻ: research 850, needs_id 87, casual 25, tổng 962. Voọc chà vá chân nâu: research 771, casual 16, tổng 787. Đây là lời gọi rẻ để biết quy mô trước khi lấy.

Ví dụ request bằng Python

import requests, time
s = requests.Session()
s.headers["User-Agent"] = "ProxyVN-docs-lab/1.0 (+https://proxy.vn/)"
B = "https://api.inaturalist.org/v1"
 
def get(path, **q):
    r = s.get(B + path, params=q, timeout=60)
    time.sleep(1.5)
    return r.json()
 
PID = 6847
TID = get("/taxa", q="Pygathrix nemaeus", per_page=1)["results"][0]["id"]
d = get("/observations", taxon_id=TID, place_id=PID, per_page=200, order_by="id", order="desc")
print(d["total_results"], len(d["results"]))

Per_page tối đa

Lab đặt per_page 200 và nhận đủ 200 quan sát. Với khối lớn hơn, phân trang theo ID thay vì theo số trang, vì trang sâu chậm và có giới hạn. Lab chưa chạy phân trang, chỉ lấy một trang mỗi loài.

Lời gọi lấy quan sát

/observations với per_page 200, order_by id, order desc trả 200 quan sát mới nhất. Sẻ có total_results 962, voọc có 787. Mỗi quan sát có hơn sáu mươi khóa, từ annotations tới votes. Lab chỉ giữ các khóa cần cho bảng.

Nhịp gọi theo khuyến nghị

iNaturalist có trang khuyến nghị cách dùng API, đề nghị giữ nhịp thấp và dùng bản xuất dữ liệu cho khối lớn. Lab nghỉ 1,5 giây, tổng tám lời gọi. Không gọi song song, không lấy hết toàn bộ quan sát.

Chọn taxon/place và quality grade cần đọc trong iNaturalist API observations

Cấp chất lượng quyết định quan sát nào đủ tin để dùng.

Ba cấp chất lượng

Ba cấp chất lượng

Ba cấp chất lượng

Research là quan sát có ảnh hoặc âm thanh, có ngày, có vị trí, và cộng đồng đồng thuận định danh tới loài. Needs_id là chưa đủ đồng thuận. Casual là thiếu điều kiện như không có ảnh hay sinh vật nuôi trồng. Trong 200 quan sát sẻ mới nhất, có 177 research, 22 needs_id, 1 casual.

Voọc không có needs_id

Voọc có 771 research, 16 casual và không có needs_id. Lab không tìm hiểu lý do, có thể vì loài có ngoại hình dễ nhận. Tỉ lệ này khác sẻ, loài có 87 quan sát còn chờ định danh. Pipeline không nên giả định mọi loài có cùng tỉ lệ cấp chất lượng.

Trang mới nhất có tỉ lệ needs_id cao hơn

Trên toàn bộ, needs_id của sẻ chiếm 87 trên 962, khoảng 9 phần trăm. Trong 200 quan sát mới nhất, needs_id chiếm 22, khoảng 11 phần trăm. Quan sát mới chưa kịp được cộng đồng xem. Lấy dữ liệu gần ngày gửi sẽ có nhiều needs_id hơn lấy lại sau vài tuần.

Lọc research ở máy chủ

Tham số quality_grade bằng research lọc ở máy chủ. Bản đồ phân bố thường chỉ dùng research. Danh sách việc cần định danh cho cộng đồng thì dùng needs_id. Lab lấy cả ba để thấy phân bố, rồi lọc ở phía mình.

Place gồm cả vùng con

Place 6847 là cấp quốc gia. Quan sát được gắn place theo tọa độ, gồm cả các tỉnh, vườn quốc gia bên trong. Trường place_ids của mỗi quan sát liệt kê mọi place chứa nó. Lab không dùng trường này, nhưng nó hữu ích khi cần lọc theo tỉnh mà không gọi lại API.

Taxon gồm cả đơn vị con

Như GBIF, taxon_id của loài trả cả quan sát định danh tới phân loài. Bảng giữ taxon ID của từng quan sát. Trong mẫu, 195 quan sát sẻ có taxon 13851, 5 quan sát mang ba taxon ID khác mà lab chưa tra, nhiều khả năng là phân loài. Cả 200 quan sát voọc có taxon 43517.

Bảng số đếm

Bảng: Bảng số đếm

Loài

taxon_id

conservation

research

needs_id

casual

Passer montanus

13851

không có

850

87

25

Pygathrix nemaeus

43517

cr

771

0

16

Số đếm đổi theo ngày

Số research, needs_id, casual là ảnh chụp tại lúc gọi. Ngày hôm sau, vài quan sát needs_id có thể đã lên research. Báo cáo ghi ngày gọi cạnh mọi con số, và không so số đếm của hai ngày như thể đó là thay đổi của quần thể.

Captive và wild

Quan sát sinh vật nuôi được đánh dấu captive và thường rơi vào casual. Voọc trong trung tâm cứu hộ có thể là captive. Bản đồ phân bố tự nhiên phải loại captive. Lọc research đã loại phần lớn trường hợp này.

Giữ observation ID và tọa độ public theo response trong iNaturalist API observations

Phần này đọc các trường vị trí đúng như API trả.

Các khóa không cần lấy

Mỗi quan sát có identifications, comments, votes, annotations, ofvs và nhiều khóa khác. Bảng bản đồ không cần chúng. Response vẫn trả, nên bảng chỉ chọn trường cần thiết khi đọc. Giữ JSON gốc nếu sau này cần phân tích định danh của cộng đồng.

Hai dạng tọa độ

Hai dạng tọa độ

Hai dạng tọa độ

Mỗi quan sát có location là chuỗi vĩ độ, kinh độ ngăn bằng dấu phẩy, và geojson là Point với coordinates theo thứ tự kinh độ, vĩ độ. Quan sát 402828796 có location là 12.2732391078,109.182614668. Hai dạng đảo thứ tự cho nhau. Bảng tách thành cột lat và lon từ geojson để không nhầm.

Observed_on và time_observed_at

Observed_on là ngày quan sát theo khai báo, time_observed_at là thời điểm có múi giờ nếu có. Ngày gửi lên nằm ở created_at. Bản đồ theo mùa dùng observed_on, thống kê hoạt động người dùng dùng created_at. Hai trường cách nhau có khi nhiều năm, khi người dùng tải ảnh cũ lên.

Không thiếu tọa độ trong mẫu

Cả 400 quan sát của hai loài đều có location và geojson. Kể cả quan sát bị làm mờ vẫn có tọa độ. Đây là điểm dễ hiểu sai nhất: có tọa độ không có nghĩa là tọa độ thật.

Positional_accuracy và public_positional_accuracy

Positional_accuracy là độ chính xác người quan sát khai. Public_positional_accuracy là độ chính xác API công bố cho tọa độ công khai. Với quan sát không làm mờ, hai giá trị thường gần nhau. Với quan sát làm mờ, public_positional_accuracy lớn hơn nhiều.

Quan sát không làm mờ thiếu độ chính xác

Trong 155 quan sát sẻ không bị làm mờ, có 20 quan sát không có public_positional_accuracy. Tọa độ của chúng có thể chính xác, có thể không, API không nói. Bảng xếp vào nhóm không rõ độ chính xác, giống cách xử lý bản ghi GBIF thiếu độ bất định.

Mappable

Mỗi quan sát có trường mappable cho biết nền tảng có hiển thị nó trên bản đồ hay không. Quan sát captive hay có vấn đề vị trí có thể không mappable. Bảng giữ trường này và dùng làm điều kiện phụ khi vẽ bản đồ.

ID và UUID

ID là số nguyên tăng dần, UUID là chuỗi định danh toàn cục. Khi nối với bản ghi trên GBIF, dùng ID hoặc URL quan sát mà GBIF lưu. Bảng giữ cả hai.

Mã đọc bảng

rows = []
for o in d["results"]:
    c = (o.get("geojson") or {}).get("coordinates") or [None, None]
    rows.append(dict(id=o["id"], uuid=o["uuid"], quality_grade=o["quality_grade"],
                     taxon_id=(o.get("taxon") or {}).get("id"), observed_on=o.get("observed_on"),
                     lon=c[0], lat=c[1], location=o.get("location"), obscured=o.get("obscured"),
                     geoprivacy=o.get("geoprivacy"), taxon_geoprivacy=o.get("taxon_geoprivacy"),
                     positional_accuracy=o.get("positional_accuracy"),
                     public_positional_accuracy=o.get("public_positional_accuracy"),
                     license_code=o.get("license_code")))

Phân biệt geoprivacy/obscuration với tọa độ thiếu trong iNaturalist API observations

Hai loài cho thấy hai cơ chế làm mờ khác nhau.

Sẻ: người quan sát chọn làm mờ

Hai cơ chế làm mờ

Hai cơ chế làm mờ

Trong 200 quan sát sẻ, 45 quan sát có obscured true. Cả 45 có geoprivacy obscured, taxon_geoprivacy open. Loài không nhạy cảm, nhưng người quan sát chọn che vị trí, có thể vì ảnh chụp gần nhà. Public_positional_accuracy của nhóm này từ 30298 tới 31218 m.

Voọc: loài bị che

Cả 200 quan sát voọc có obscured true và taxon_geoprivacy obscured. 108 quan sát có geoprivacy None, 92 có geoprivacy obscured. Dù người quan sát không chọn che, vị trí vẫn bị làm mờ vì loài cực kỳ nguy cấp. Public_positional_accuracy từ 30490 tới 48059 m.

Obscured là cờ quyết định

Geoprivacy None không có nghĩa là vị trí mở. Với voọc, geoprivacy None mà obscured vẫn true. Bảng phải dựa vào obscured để biết tọa độ có bị làm mờ hay không, rồi dùng geoprivacy và taxon_geoprivacy để ghi lý do.

Độ chính xác công khai khác nhau giữa hai loài

Sẻ bị làm mờ do người quan sát có public_positional_accuracy quanh 30 km, khá đồng đều. Voọc có khoảng rộng hơn, tới 48 km. Lab không biết chi tiết thuật toán làm mờ. Bảng chỉ cần ghi giá trị API trả cho từng quan sát và dùng nó khi vẽ vùng.

Tọa độ làm mờ vẫn có giá trị

Quan sát 412620608 của voọc có tọa độ công khai 16.0944, 108.3593 với public_positional_accuracy 30841 m. Tọa độ này cho biết quan sát nằm đâu đó trong vùng khoảng ba mươi km. Đủ để nói loài có mặt ở một khu vực rộng, không đủ để chỉ một cánh rừng.

Positional_accuracy gốc không phải vị trí

Cùng quan sát đó có positional_accuracy 8235 m. Đây là độ chính xác người quan sát khai cho vị trí thật, không phải tọa độ thật. Lab không dùng trường này để thu hẹp vùng, và bảng ghi rõ cột này không áp dụng cho tọa độ công khai.

Không làm mờ thêm lần nữa

Một số dự án tự làm mờ thêm khi hiển thị. Đó là quyết định hợp lý cho loài nhạy cảm. Nhưng không được làm ngược lại: thu nhỏ vùng hiển thị xuống dưới public_positional_accuracy là trình bày một độ chính xác mà dữ liệu không có.

Private khác obscured

Geoprivacy private ẩn hẳn vị trí khỏi người khác. Lab không gặp quan sát private trong 400 quan sát mẫu. Nếu gặp, quan sát có thể không có tọa độ công khai. Đó là thiếu có chủ đích, khác với tọa độ thiếu do lỗi.

Mã gán trạng thái vị trí

def vi_tri(r):
    if r["obscured"]:
        return "lam_mo_nguoi_quan_sat" if r["geoprivacy"] == "obscured" else "lam_mo_do_loai"
    return "mo_co_do_chinh_xac" if r["public_positional_accuracy"] else "mo_khong_ro"

Với dữ liệu lab, voọc có 92 quan sát mà cả người quan sát và loài đều che. Hàm trên xếp chúng vào nhóm người quan sát chọn che, vì đó là lựa chọn rõ ràng nhất. Cột taxon_geoprivacy vẫn giữ để biết loài cũng bị che.

Bảng trạng thái vị trí

Bảng: Bảng trạng thái vị trí

Trạng thái

Điều kiện

Sẻ

Voọc

Mở, có độ chính xác

obscured false, có public accuracy

135

0

Mở, không rõ độ chính xác

obscured false, thiếu public accuracy

20

0

Làm mờ do người quan sát

obscured true, geoprivacy obscured

45

92

Làm mờ do loài

obscured true, chỉ taxon_geoprivacy obscured

0

108

Lưu license theo observation và không khôi phục vị trí đã ẩn với iNaturalist API observations

Phần này nói về quyền dùng và ranh giới đạo đức.

Giấy phép của quan sát

Sẻ: cc-by-nc 127, None 39, cc-by 27, cc0 4, cc-by-nc-nd 3. Voọc: cc-by-nc 184, None 13, cc-by 2, cc-by-sa 1. License_code None nghĩa là người quan sát giữ mọi quyền. Quan sát đó không được dùng lại dữ liệu khi chưa xin phép.

Giấy phép mặc định của nền tảng

Người dùng iNaturalist có thể đặt giấy phép mặc định cho quan sát và ảnh, rồi đổi cho từng quan sát. Vì vậy cùng một người có thể có quan sát cc-by-nc và quan sát None. Không suy giấy phép của một quan sát từ quan sát khác của cùng người.

Giấy phép của ảnh tách riêng

Mỗi ảnh trong photos có license_code riêng. Trong 200 quan sát sẻ, tập giấy phép ảnh phổ biến nhất là cc-by-nc với 123 quan sát, rồi none 48, cc-by 18, cc-by-sa 8, cc0 2. Giấy phép của quan sát và của ảnh có thể khác nhau. Dùng ảnh phải đọc giấy phép ảnh.

Bảng quyền dùng

Bảng: Bảng quyền dùng

Giấy phép

Dùng dữ liệu

Ghi chú

cc0

Được

Không bắt buộc ghi nguồn

cc-by

Được, ghi nguồn

Kể cả thương mại

cc-by-nc

Được, ghi nguồn

Không thương mại

cc-by-nc-nd

Hạn chế

Không phái sinh

None

Không

Mọi quyền thuộc người quan sát

Không khôi phục vị trí

Tọa độ bị làm mờ để bảo vệ loài khỏi săn bắt hoặc bảo vệ riêng tư của người quan sát. Pipeline không suy vị trí thật từ ảnh, từ siêu dữ liệu ảnh, từ place_guess, từ nhiều quan sát gần nhau hay từ nguồn khác. Bài không hướng dẫn và không hỗ trợ việc đó.

Dữ liệu cho nghiên cứu cần vị trí thật

Nghiên cứu bảo tồn đôi khi cần vị trí thật. Đường đi đúng là liên hệ người quan sát, hoặc làm việc với cơ quan bảo tồn và dự án có quyền truy cập, theo quy trình của nền tảng. Pipeline tự động không phải nơi xử lý yêu cầu này.

Hiển thị đúng trên bản đồ

Quan sát obscured nên hiển thị bằng vùng hoặc ô lưới cỡ public_positional_accuracy, không bằng chấm. Chú thích ghi rõ vị trí đã được làm mờ. Với loài nguy cấp, bản đồ công khai có thể chỉ nên hiển thị cấp tỉnh.

Place_guess cũng là thông tin nhạy cảm

Place_guess là chuỗi địa điểm người quan sát gõ hoặc ứng dụng điền. Với quan sát làm mờ, chuỗi này có thể chi tiết hơn tọa độ công khai. Bảng chia sẻ rộng nên bỏ cột này, hoặc chỉ giữ cho quan sát không bị làm mờ.

Ghi nguồn đúng cách

Với quan sát cc-by hay cc-by-nc, ghi nguồn gồm tên người quan sát, ID quan sát hoặc URL, giấy phép. Ảnh dùng trong tài liệu ghi nguồn theo giấy phép ảnh. Bảng có sẵn user, id và license_code, đủ để sinh dòng ghi nguồn cho từng mục.

Tên người quan sát

Bảng có user login để ghi nguồn khi giấy phép yêu cầu. Bảng phân tích nội bộ có thể giữ, bảng công khai chỉ nên giữ khi ghi nguồn. Không dùng login để tìm thêm thông tin về người quan sát.

Đầu ra nghiệm thu: Bảng observation ID quality grade tọa độ public và trạng thái obscured của iNaturalist API observations

Phần này liệt kê điều kiện để coi bảng là xong.

Tệp obs_13851.csv và obs_43517.csv

Mỗi quan sát một dòng với id, uuid, quality_grade, taxon_id, observed_on, lon, lat, location, obscured, geoprivacy, taxon_geoprivacy, positional_accuracy, public_positional_accuracy, license_code, photo_licenses, user, place_guess. Lab ghi 200 dòng mỗi loài.

Cột trạng thái vị trí

Mỗi dòng có một trong bốn trạng thái ở bảng trên. Không dòng nào có obscured true mà bị xếp vào trạng thái mở.

Cột quyền dùng

Mỗi dòng có quyền dùng suy từ license_code. Dòng license None được đánh dấu không dùng. Giấy phép ảnh tách cột riêng.

Kiểm cột trạng thái

Lab đếm theo hàm trạng thái trên 400 quan sát. Không dòng nào có obscured true mà ra trạng thái mở. Tổng bốn trạng thái của mỗi loài bằng 200.

Bảng nghiệm thu của lab

Nghiệm thu bảng quan sát

Nghiệm thu bảng quan sát

Bảng: Bảng nghiệm thu của lab

Hạng mục

Kết quả 05/11/2026

place Vietnam

6847

Sẻ obscured

45 trên 200, do người quan sát

Voọc obscured

200 trên 200, do loài

Public accuracy khi obscured

30298 tới 48059 m

Quan sát thiếu tọa độ

0 trên 400

License None

Sẻ 39, voọc 13

Private gặp trong mẫu

0

Những gì lab chưa chạy

Lab chưa đăng nhập, chưa thử quan sát private, chưa thử tham số geoprivacy hay taxon_geoprivacy làm bộ lọc, chưa thử phân trang bằng id_below cho khối lớn. Lab cũng chưa nối với bản ghi GBIF theo ID.

Vận hành iNaturalist API observations trong pipeline bản đồ

Pipeline bản đồ cần cập nhật đều nhưng giữ nhịp thấp.

Tách lab khỏi sản xuất

Lab lấy 200 quan sát mỗi loài để hiểu dữ liệu. Pipeline sản xuất lấy theo danh sách loài và vùng trong cấu hình, có trần số quan sát mỗi lượt và nhịp gọi cố định. Khi danh sách loài dài, cân nhắc dùng bản xuất hoặc GBIF thay vì gọi API cho từng loài.

Lấy phần mới theo ID

Order_by id với order desc trả quan sát mới nhất trước. Lần chạy sau dừng khi gặp ID đã có. Cách này nhẹ hơn lấy lại toàn bộ.

Cập nhật cấp chất lượng

Quan sát needs_id có thể lên research sau vài ngày, quan sát research có thể bị đổi định danh. Lấy lại định kỳ các quan sát của vài tuần gần nhất, cập nhật quality_grade và taxon. Ghi lịch sử thay đổi nếu bản đồ đã công bố.

Khối lớn dùng bản xuất

Khi cần hàng chục nghìn quan sát, dùng công cụ xuất dữ liệu của iNaturalist hoặc dùng GBIF với DOI, thay vì phân trang API. Trang khuyến nghị của iNaturalist cũng hướng người dùng làm vậy.

Ghi log mỗi lượt

Log ghi taxon, place, số quan sát mới, số quan sát đổi cấp chất lượng, số quan sát đổi trạng thái obscured. Một quan sát chuyển từ mở sang obscured nghĩa là người quan sát vừa chọn che vị trí. Bảng công khai phải cập nhật ngay, không giữ tọa độ cũ.

Xử lý lỗi

429 là gọi quá nhanh, giảm nhịp. 5xx thử lại có giãn cách. Response 200 với results rỗng thì kiểm lại place_id và taxon_id trước khi kết luận không có quan sát.

Proxy ở tầng mạng

API iNaturalist công khai, gọi thẳng là cách nên dùng. Proxy không mở tọa độ bị làm mờ, không đổi giấy phép, và dùng nhiều IP để vượt nhịp gọi là trái khuyến nghị của nền tảng. Cách đặt nhịp gọi khi đi qua proxy có ở bài rate limit API khi dùng proxy. Cách ghi chuỗi proxy có ở bài định dạng proxy, vai trò proxy trong thu thập có ở bài Web Scraping proxy là gì. Khi cần IP Việt Nam cho tác vụ khác, anh em có thể mua proxy tại trang chủ ProxyVN.

Bảng công khai và bảng nội bộ

Bảng nội bộ giữ đủ cột. Bảng công khai bỏ place_guess của quan sát bị làm mờ, bỏ positional_accuracy gốc, chỉ giữ tọa độ công khai kèm public_positional_accuracy và trạng thái vị trí. Tách hai bảng ngay từ pipeline để không ai chia sẻ nhầm.

Khóa phiên bản

Lab gọi API v1 với Python 3.12.10, requests 2.34.2. Đặc tả Swagger là nguồn tham số. Ghi phiên bản API vào metadata của bảng.

Có tọa độ không có nghĩa là tọa độ thật. Obscured true thì hiển thị vùng, ghi lý do, và không bao giờ tìm cách khôi phục vị trí.

iNaturalist API observations: câu hỏi thường gặp

Các câu dưới đây gom những điểm hay bị hỏi.

Có cần đăng nhập để đọc quan sát không?

Không. Đọc ẩn danh trả tọa độ công khai, đủ cho bản đồ công khai.

Geoprivacy None có nghĩa vị trí mở?

Không chắc. Loài nhạy cảm vẫn bị làm mờ qua taxon_geoprivacy. Dựa vào obscured.

Tọa độ obscured lệch bao xa?

Trong lab, public_positional_accuracy từ khoảng 30 km tới 48 km. Đọc trường này cho từng quan sát.

License None có dùng được không?

Không dùng lại khi chưa xin phép người quan sát.

Có cộng số quan sát iNaturalist với GBIF?

Không vô điều kiện. Quan sát research-grade đã có trong GBIF.

Có cách nào biết vị trí thật của loài nguy cấp?

Bài không hướng dẫn việc đó. Nhà nghiên cứu cần vị trí thật liên hệ cơ quan bảo tồn hoặc người quan sát qua kênh chính thức.

Có nên dùng needs_id cho bản đồ?

Thường không. Needs_id chưa có đồng thuận định danh. Dùng research cho bản đồ phân bố, needs_id cho việc cộng đồng cần xem.

Quan sát casual có vô dụng không?

Không. Casual vẫn là ghi nhận thật, chỉ thiếu điều kiện để thành research. Với nghiên cứu về sinh vật nuôi hay đô thị, casual có thể có ích. Giữ trong bảng, lọc khi vẽ bản đồ tự nhiên.

Bao lâu nên lấy lại dữ liệu?

Hằng tuần cho dashboard, hằng tháng cho báo cáo. Mỗi lần lấy lại vài tuần gần nhất để cập nhật cấp chất lượng.

Người quan sát đổi geoprivacy sau khi mình đã lấy thì sao?

Lần lấy lại sau sẽ thấy obscured đổi. Cập nhật bảng và xóa tọa độ cũ khỏi mọi bản công khai.

iNaturalist API observations và những điều cần nhớ

iNaturalist API observations cho dữ liệu quan sát đáng tin khi giữ ID, cấp chất lượng, tọa độ công khai, obscured, geoprivacy và giấy phép của từng quan sát. Dựa vào obscured để biết vị trí đã bị làm mờ, hiển thị vùng thay cho chấm, tách giấy phép ảnh khỏi giấy phép quan sát, và không khôi phục vị trí đã ẩn. Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam khuyên anh em giữ cột trạng thái vị trí trong mọi bảng dựng từ iNaturalist API observations.

TIN TỨC LIÊN QUAN