이 문서는 "해양 교통 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
패키지는 다음 명령을 사용하여 gitub 저장소에서 직접 설치할 수도 있지만 다음 예제를 실행하려면 경로를 추가로 변경해야 합니다.
pip install git+https://github.com/marinetraffic/mt-ais-toolbox.git;
아래 구성 섹션도 확인하세요.
참고: pygeos 공간 조인 속도를 높이려면 다음 시스템 변수를 설정하는 것이 좋습니다.
export USE_PYGEOS=1
이 도구 상자는 주로 래스터화 프로세스를 위해 GDAL 라이브러리를 사용하므로 Windows 운영 체제에 설치하려면 시스템 전체에 GDAL을 설치해야 합니다.
Windows에서 이 모듈을 사용하려면 이 도구 상자를 설치하기 전에 작동하는 GDAL 설치가 필요합니다. 해결 방법은 OSGeo4w(https://trac.osgeo.org/osgeo4w/)를 통해 GDAL을 설치하고 포함된 Python 버전을 대신 사용하도록 적절한 경로를 정의하는 것입니다. 또한 PATH 환경 변수에 osgeo 설치 폴더의 bin 디렉터리를 포함시켜야 합니다.
이 패키지에는 다음이 포함됩니다.
다음을 결정하는 구성.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 메시지는 구성 파일에 표시된 필터를 통과해야 합니다. 여기에는 이동 필드의 유효성, 선박 ID(MMSI)의 유효성, 토지 마스크 및 기타 사항 확인이 포함될 수 있습니다(아래 필터 섹션 참조). 입력 및 출력 디렉터리와 적용할 필터는 제공된 구성 파일에 정의됩니다. 청소 프로세스는 다음과 같이 실행할 수 있습니다.
python -m mt.cleaning.data_cleaning config/config.json
동일한 용기에 대한 데이터세트(녹색)를 정리합니다. 빨간색 메시지는 필터링됩니다.
밀도 맵 생성 단계에서는 정리된 ais 파일을 읽고 구성 파일에서 선택한 방법에 대한 밀도 맵을 생성합니다. 두 가지 옵션을 사용할 수 있습니다. 첫 번째 옵션은 각 셀 내의 혈관 수를 측정하는 반면, 두 번째 옵션은 교차하는 모든 혈관의 각 셀 내에서 소요되는 시간을 집계합니다.
python -m mt.density.export_density_maps config/config.json
밀도 맵을 계산하는 데 사용되는 1km 측면 그리드. 세 척의 선박 위치 청소
래스터화 프로세스.
구성에 제공된 대로 지리 참조된 TIFF 형식 및 색상 맵의 time_at_cells 메소드 결과 맵입니다.
Marinetraffic AIS 도구 상자에서 제공하는 필터는 다음과 같습니다.
제공된 구성 파일에 따라 위의 필터 중 어떤 필터가 적용될지 결정됩니다.
Marinetraffic AIS 도구 상자 구성 파일은 입력 및 출력 경로를 제어하고, 데이터 정리 프로세스의 민감도를 조정하고, 지도 생성 프로세스의 다른 측면을 제어하는 매개변수로 구성된 json 파일입니다.
매개변수 | 설명 | 기본값 |
---|---|---|
"기하학_파일_경로" | 사용된 형상 파일의 경로 | 구성에서 |
"그리드_경로" | 그리드 저장 경로 | 구성에서 |
"ais_path" | 병합된 AIS 메시지 디렉터리의 경로 | 구성에서 |
"ais_cleaned_path" | 정리된 AIS 메시지 디렉터리의 경로 | 구성에서 |
"ais_decoded_path" | 병합된 AIS 메시지 디렉터리의 경로 | 구성에서 |
"밀도_경로" | 결과 밀도 파일 디렉터리의 경로 | 구성에서 |
"colors_files_path" | 밀도 파일 경로(TIFF) 컬러 파일 디렉터리 | 구성에서 |
"ais_stats_path" | 통계 디렉터리 경로 | 구성에서 |
"아웃_crs" | 출력 좌표계 코드(CRS 3035 또는 3857(테스트되지 않음)) | 3035 |
"빈 필드" | true인 경우 빈 필드가 있는 메시지가 제거됩니다. | 거짓 |
"invalid_movement_fields" | true인 경우 COG,SOG,LON,LAT 필드에 잘못된 값이 있는 메시지가 제거됩니다. | 거짓 |
"invalid_mmsi" | true인 경우 잘못된 mmsi 값이 있는 메시지가 제거됩니다(아래 참조). | 거짓 |
"false_mmsi" | 제외할 MMSI 목록 | 구성에서 |
"랜드_마스크" | 사실이라면 토지 마스킹 프로세스를 시행합니다. | 거짓 |
"경계_상자" | 관심 영역을 나타내는 좌표 목록입니다. 좌표는 [minLon, minLat, maxLon, maxLat] 형식이며 출력 투영 시스템을 따라야 합니다. | 구성의 선택 사항(예: [5905000, 2185000, 5910000, 2190000]) |
"다운샘플링" | true인 경우 다운샘플링 프로세스를 시행합니다. | 거짓 |
"다운샘플링_속도" | 다운샘플링 속도(밀리초) | 구성에서 (예: 180000 ~ 3분) |
"소음_필터" | true인 경우에는 불가능한 전환을 나타내는 메시지를 제거하여 노이즈 필터링 프로세스를 시행합니다. | 구성에서 |
"grid_edge_lengths" | 그리드 생성을 위한 그리드 셀 길이 목록입니다. 각 길이는 각 치수의 가장자리 크기(미터)를 나타냅니다. | 구성(예: [500000,200000,10000]) |
"기간" | true인 경우 각 메시지 타임스탬프에 대한 필터를 적용합니다. true인 경우 "start_time"/"end_time"을 정의해야 합니다(EPOCH 표현 사용 - 밀리초 단위). | 거짓 |
"시작/종료_시간" | teimframe 필터의 시작/종료 시간(밀리초) | 구성(예: 1647592893000) |
"최소 위치" | 치료 프로세스에 포함될 파일의 최소 AIS 메시지 수 | 10 |
"최대 스레드" | 실행 중 최대 스레드 수. 병렬로 작동하는 프로세스에만 해당 | 4 |
"밀도_방법" | 밀도 맵 'vessels_count'(기본값) 또는 'time_at_cells'에 사용할 방법 | '선박_수' |
"밀도_용기_유형" | 밀도 맵을 생성하는 동안 고려해야 할 혈관 유형 목록입니다. AIS에 제공된 유형 코드를 기반으로 각 선박 유형에 대해 하나의 지도가 생성됩니다. '모두' 옵션에는 유형에 관계없이 모든 선박이 포함됩니다. 옵션에는 ['전체', '화물', '유조선', '준설', 'HSC', '낚시', '군법', '승객', '즐거움', '항해', '서비스', '예인선'이 포함됩니다. ', '알 수 없음', '기타'] | '모두' |
컬러 파일이 있는 디렉토리('colors_files_path')에는 'colors_{GEL}.txt'라는 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
이 작업은 서비스 계약 번호 CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940을 통해 유럽 해양 수산 기금(EMFF)에서 부분적으로 자금을 지원 받았습니다.
이 저작물은 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License에 따라 라이센스가 부여됩니다.