เอกสารนี้ให้ภาพรวมโดยย่อของกระบวนการ ตลอดจนข้อมูลและเครื่องมือที่จำเป็นในการสร้างแผนที่ความหนาแน่นโดยใช้ "กล่องเครื่องมือ AIS การจราจรทางทะเล" ข้อมูลที่ใช้ในภาพรวมนี้จะถูกถอดรหัสข้อมูลระบบระบุตัวตนอัตโนมัติ (AIS) ในอดีต
เราขอแนะนำอย่างยิ่งให้ใช้โมดูลนี้ในสภาพแวดล้อมเสมือนเพื่อให้แน่ใจว่าแพ็คเกจเข้ากันได้
git clone https://github.com/marinetraffic/mt-ais-toolbox.git;
cd mt-ais-toolbox/;
python3 -m venv .venv;
source .venv/bin/activate;
pip install -e .;
export USE_PYGEOS=1;
การติดตั้งแพ็คเกจในสภาพแวดล้อมเสมือน
pip install -e .
หากต้องการปิดใช้งานสภาพแวดล้อมเสมือนให้ใช้:
deactivate
แพ็คเกจสามารถติดตั้งได้โดยตรงจาก repo gitub ของเราด้วยคำสั่งต่อไปนี้ อย่างไรก็ตาม จำเป็นต้องเปลี่ยนแปลงเส้นทางเพิ่มเติมเพื่อเรียกใช้ตัวอย่างต่อไปนี้
pip install git+https://github.com/marinetraffic/mt-ais-toolbox.git;
ตรวจสอบส่วนการกำหนดค่าด้านล่างด้วย
หมายเหตุ: ขอแนะนำให้ตั้งค่าตัวแปรระบบต่อไปนี้เพื่อเร่งความเร็วการรวมเชิงพื้นที่ของ pygeos:
export USE_PYGEOS=1
กล่องเครื่องมือนี้อาศัยไลบรารี GDAL สำหรับกระบวนการแรสเตอร์ไรซ์เป็นหลัก ดังนั้นการติดตั้งในระบบปฏิบัติการ windows จะต้องมีการติดตั้ง GDAL ที่ใช้งานได้ทั่วทั้งระบบของคุณ
หากต้องการใช้โมดูลนี้ใน Windows คุณจะต้องมีการติดตั้ง GDAL ที่ใช้งานได้ก่อนที่จะติดตั้งกล่องเครื่องมือนี้ วิธีแก้ปัญหาคือติดตั้ง GDAL ผ่าน OSGeo4w (https://trac.osgeo.org/osgeo4w/) และกำหนดเส้นทางที่เหมาะสมเพื่อใช้เวอร์ชัน python ที่รวมอยู่แทน นอกจากนี้ คุณต้องรวมไดเร็กทอรี bin ของโฟลเดอร์การติดตั้ง osgeo ให้กับตัวแปรสภาพแวดล้อม PATH ของคุณ
แพ็คเกจนี้ประกอบด้วย
ไฟล์ configuration.json ที่กำหนด:
การใช้งานสำหรับ:
แต่ละขั้นตอนในแนวทางของเราจำเป็นต้องมีพารามิเตอร์บางตัวซึ่งรวมถึง: เส้นทางสำหรับไฟล์อินพุตและไดเร็กทอรีเอาต์พุต ธงที่เกี่ยวข้องกับการดำเนินการที่จะดำเนินการ เกณฑ์เพิ่มเติมที่จำเป็นระหว่างการดำเนินการ (เช่น อัตราการสุ่มตัวอย่าง) ข้อมูลทั้งหมดนั้นควรรวมอยู่ในไฟล์การกำหนดค่า โดยควรส่งผ่านเป็นอาร์กิวเมนต์ระหว่างการดำเนินการ (เช่น config/config.json)
สำหรับการโหลดข้อความ AIS ควรรวมไฟล์ค่าที่บีบอัดโดยคั่นด้วยเครื่องหมายจุลภาค (รูปแบบ .csv.bz2) ไฟล์เหล่านี้ควรมีข้อความเรียงตามการประทับเวลา ในกรณีที่มีไฟล์อินพุตหลายไฟล์ จะต้องเรียงลำดับตามตัวอักษรเพื่อให้ไฟล์ที่มีข้อความก่อนหน้ามาก่อน
รวมข้อมูลที่ถอดรหัส: ข้อความ AIS (แบบคงที่และแบบตำแหน่ง) จะถูกรวมเข้าด้วยกัน เพื่อให้แต่ละข้อความตำแหน่งมีข้อมูลเพิ่มเติมที่มาจากข้อความ AIS แบบคงที่ที่สอดคล้องกัน กระบวนการรวมสามารถทำได้โดย:
python -m mt.cleaning.ais_merge config/config.json
ในกรณีที่ข้อความเป็นรายงานแบบคงที่:
t,station,channel_code,mmsi,type,data_type,imo;shiptype;to_bow;to_stern;to_port;to_starboard;callsign;shipname;draught;destination;eta_month;eta_day;eta_hour;eta_minute
ในกรณีที่ข้อความเป็นรายงานตำแหน่ง:
t,station,channel_code,mmsi,type,data_type,lon;lat;heading;course;speed;rot_direction;rot;navigation_status
ชุดข้อมูลตัวอย่างต้นฉบับสำหรับเรือลำเดียว
ล้างข้อมูลที่ผสาน: หลังจากรวมข้อความ AIS ทั้งหมดแล้วควรผ่านตัวกรองที่ระบุในไฟล์กำหนดค่า สิ่งเหล่านี้อาจรวมถึง: การตรวจสอบความถูกต้องของช่องการเคลื่อนไหว ความถูกต้องของรหัสเรือ (MMSI) หน้ากากดิน และอื่นๆ (ดูส่วนตัว กรอง ด้านล่าง) ไดเร็กทอรีอินพุตและเอาต์พุตและตัวกรองที่จะใช้ถูกกำหนดไว้ในไฟล์การกำหนดค่าที่กำหนด กระบวนการทำความสะอาดสามารถทำได้โดย:
python -m mt.cleaning.data_cleaning config/config.json
ทำความสะอาดชุดข้อมูล (สีเขียว) สำหรับเรือลำเดียวกัน ข้อความสีแดงจะถูกกรองออก
ขั้นตอนการสร้างแผนที่ความหนาแน่นจะอ่านไฟล์ ais ที่ล้างแล้ว และสร้างแผนที่ความหนาแน่นตามวิธีที่เลือกในไฟล์การกำหนดค่า มีสองตัวเลือกให้เลือก ตัวเลือกแรกจะวัดจำนวนเรือภายในแต่ละเซลล์ ในขณะที่ตัวเลือกที่สองจะรวมเวลาที่ใช้ภายในแต่ละเซลล์ของเรือทั้งหมดที่ข้ามไป
python -m mt.density.export_density_maps config/config.json
ตารางด้านข้าง 1 กม. ใช้ในการคำนวณแผนที่ความหนาแน่น ทำความสะอาดตำแหน่งของเรือสามลำ
กระบวนการแรสเตอร์
แผนที่ผลลัพธ์ของเมธอด time_at_cells ในรูปแบบ TIFF ที่อ้างอิงทางภูมิศาสตร์และแผนผังสีตามที่ระบุไว้ในการกำหนดค่า
ตัวกรองที่จัดทำโดยกล่องเครื่องมือ Marinetraffic AIS ประกอบด้วย:
ไฟล์การกำหนดค่าที่กำหนดจะกำหนดว่าจะใช้ตัวกรองใดข้างต้น
ไฟล์การกำหนดค่ากล่องเครื่องมือ Marinetraffic AIS เป็นไฟล์ json ที่ประกอบด้วยพารามิเตอร์ที่ควบคุมเส้นทางอินพุตและเอาต์พุต ปรับความไวของกระบวนการล้างข้อมูล และควบคุมด้านอื่น ๆ ของกระบวนการสร้างแผนที่
พารามิเตอร์ | คำอธิบาย | ค่าเริ่มต้น |
---|---|---|
"เรขาคณิต_file_path" | เส้นทางสำหรับไฟล์เรขาคณิตที่ใช้ | ในการกำหนดค่า |
"กริด_พาธ" | เส้นทางสำหรับการบันทึกตาราง | ในการกำหนดค่า |
"ais_path" | เส้นทางของไดเร็กทอรีข้อความ AIS ที่รวมเข้าด้วยกัน | ในการกำหนดค่า |
"ais_cleaned_path" | เส้นทางของไดเร็กทอรีข้อความ AIS ที่ล้างแล้ว | ในการกำหนดค่า |
"ais_decoded_path" | เส้นทางของไดเร็กทอรีข้อความ AIS ที่รวมเข้าด้วยกัน | ในการกำหนดค่า |
"ความหนาแน่น_เส้นทาง" | เส้นทางของไดเร็กทอรีไฟล์ความหนาแน่นผลลัพธ์ | ในการกำหนดค่า |
"colors_files_path" | ไดเร็กทอรีไฟล์สี Path of Density (TIFF) | ในการกำหนดค่า |
"ais_stats_path" | พาธสำหรับไดเร็กทอรีสถิติ | ในการกำหนดค่า |
"out_crs" | รหัสระบบอ้างอิงพิกัดเอาต์พุต (CRS 3035 หรือ 3857 (ไม่ได้ทดสอบ)) | 3035 |
"empty_fields" | ถ้าเป็นจริงจะลบข้อความที่มีช่องว่าง | เท็จ |
"invalid_movement_fields" | หากเป็นจริงจะลบข้อความที่มีค่าไม่ถูกต้องในช่อง COG,SOG,LON,LAT | เท็จ |
"invalid_mmsi" | หากเป็นจริงจะลบข้อความที่มีค่า mmsi ที่ไม่ถูกต้อง (ดูด้านล่าง) | เท็จ |
"false_mmsi" | รายการ MMSI ที่จะยกเว้น | ในการกำหนดค่า |
"แลนด์_มาสก์" | หากเป็นจริงจะบังคับใช้กระบวนการกำบังที่ดิน | เท็จ |
"bounding_box" | รายการพิกัดที่ระบุพื้นที่ที่สนใจ พิกัดอยู่ในรูปแบบ: [minLon, minLat, maxLon, maxLat] และต้องเป็นไปตามระบบการฉายภาพเอาต์พุต | ไม่จำเป็นในการกำหนดค่า (ตัวอย่าง: [5905000, 2185000, 5910000, 2190000]) |
"ดาวน์ตัวอย่าง" | หากเป็นจริง ระบบจะบังคับใช้กระบวนการสุ่มตัวอย่าง | เท็จ |
"ดาวน์ตัวอย่าง_เรต" | อัตราการสุ่มตัวอย่าง (เป็นมิลลิวินาที) | ในการกำหนดค่า (ตัวอย่าง: 180000 ~ 3 นาที) |
"noise_filter" | หากเป็นจริง ระบบจะบังคับใช้กระบวนการกรองสัญญาณรบกวนโดยกำจัดข้อความที่บ่งชี้ถึงการเปลี่ยนผ่านที่ไม่น่าจะเป็นไปได้ | ในการกำหนดค่า |
"grid_edge_lengths" | รายการความยาวเซลล์กริดสำหรับการสร้างกริด ความยาวแต่ละอันบ่งบอกถึงขนาดของขอบในแต่ละมิติ (หน่วยเป็นเมตร) | ในการกำหนดค่า (ตัวอย่าง: [500000,200000,10000]) |
"กรอบเวลา" | หากเป็นจริง ระบบจะบังคับใช้ตัวกรองเกี่ยวกับการประทับเวลาแต่ละข้อความ หากเป็นจริง จะต้องกำหนด "start_time"/"end_time" (โดยใช้การแสดง EPOCH - มีหน่วยเป็นมิลลิวินาที) | เท็จ |
"เริ่มต้น/สิ้นสุด_เวลา" | เวลาเริ่มต้น/สิ้นสุดสำหรับตัวกรอง teimframe (หน่วยเป็นมิลลิวินาที) | ในการกำหนดค่า (ตัวอย่าง: 1647592893000) |
"ขั้นต่ำ_ตำแหน่ง" | จำนวนข้อความ AIS ขั้นต่ำสำหรับไฟล์ที่จะรวมไว้ในกระบวนการทำความสะอาด | 10 |
"max_threads" | จำนวนเธรดสูงสุดระหว่างการดำเนินการ เฉพาะกระบวนการที่ทำงานคู่ขนานกันเท่านั้น | 4 |
"ความหนาแน่น_วิธีการ" | วิธีการใช้สำหรับแผนที่ความหนาแน่น 'vessels_count' (ค่าเริ่มต้น) หรือ 'time_at_cells' | 'เรือ_นับ' |
"ความหนาแน่น_เรือ_ประเภท" | รายชื่อประเภทของเรือที่ต้องพิจารณาขณะสร้างแผนที่ความหนาแน่น แผนที่หนึ่งจะถูกสร้างขึ้นสำหรับเรือแต่ละประเภทตามรหัสประเภทที่ให้ไว้ใน AIS ตัวเลือก 'ทั้งหมด' รวมถึงเรือทั้งหมดโดยไม่คำนึงถึงประเภท ตัวเลือกได้แก่: ['ทั้งหมด', 'สินค้า', 'เรือบรรทุกน้ำมัน', 'การขุดลอก', 'HSC', 'การตกปลา', 'กฎหมายทหาร', 'ผู้โดยสาร', 'ความสุข', 'การแล่นเรือใบ', 'บริการ', 'ลากจูง ', 'ไม่ทราบ', 'อื่นๆ'] | 'ทั้งหมด' |
ไดเรกทอรี ('colors_files_path') ที่มีไฟล์สีควรมีไฟล์ TXT ชื่อ 'colors_{GEL}.txt' โดยที่ GEL คือความยาวของขอบตารางแต่ละเส้นในหน่วยเมตร (ตัวอย่าง: 'colors_1000.txt') แต่ละไฟล์ควรมีเกณฑ์ความหนาแน่นตามด้วยสีที่เหมาะสม ซึ่งแสดงเป็น RGB และมีตัวบ่งชี้ความทึบ (0-255)
คุณสามารถแยกข้อกำหนดจากการนำเข้าได้โดยใช้คำสั่ง: pipreqs --force
คุณสามารถใช้แพ็คเกจ pip-licenses เพื่อตรวจสอบใบอนุญาตอ้างอิง
pip-licenses -p pyproj geopandas Fiona haversine pandas Shapely
ผลลัพธ์ใน:
Fiona 1.8.21 BSD License
Shapely 2.0.0 BSD License
geopandas 0.10.2 BSD
haversine 2.5.1 MIT License
pandas 1.4.2 BSD License
pyproj 3.3.1 MIT License
งานนี้ได้รับทุนบางส่วนจาก European Maritime and Fisheries Fund (EMFF) ผ่านสัญญาบริการหมายเลข CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940
งานนี้ได้รับอนุญาตภายใต้ Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License