Image-based extrapolation, subpixel-level compensation and GPU-accelerated approximate integrals calculation to measure global distortions in map projections
Creators: name: Yan, Jin
name: Gao, Jing
name: Xu, TianSheng
name: Zhang, Jing
name: Liu, Jingwei
name: Li, Ni
name: Gong, Guanghong
Publisher: name: figshare
Year: 2024
Subjects: classificationCode: 401301
subject: Cartography and digital mapping
classificationCode: 490399
subject: Numerical and computational mathematics not elsewhere classified

description: This study proposes a modern GPU-accelerated integration method based on image encoding, extrapolation, and subpixel-level compensation to calculate global distortions in map projections.It is recommended to use computers with memory greater than 16 GB; otherwise, there may be errors. It can be optimized for streaming processing to support memory less than 16 GB, but this is not the focus of our study.int_global_distort.jl: Demonstration code for Kavraisky VII projection using nGPUtrds = 256 and nGPUblks = 20 with partitioning for GPU processing (see bench_global_distort_gpu_partitioning.jl).bench_global_distort_cpu.jl: The most time-consuming part of the algorithm (i.e., calculating the distortion term) is implemented on CPU for reference. Coordinate extraction and area term calculation is still ruining on GPU.bench_global_distort_gpu.jl: Implementation of calculating the distortion term on GPUs with greater than 6 GB of memory for acceleration. Parameters are nGPUtrds = 128 and nGPUblks = [32, 64, 96, 108, 128, 160, 192].<br>bench_global_distort_gpu_partitioning.jl: Implementation involves partitioning for GPUs with less than 6 GB of memory. Parameters are nGPUtrds = 256 and nGPUblks = [4, 8, 12, 16, 20, 24, 28, 32].Kavraisky VII (kav7) projection is an example for the demonstration of the proposed method. The output of the demonstration code is as below.&gt; julia .\int_global_distort.jlkav7coordinate extraction ...auto-detect: (blocks = 40, threads = 640)auto-detect: (blocks = 40, threads = 640) 19.760072 seconds (20.04 M allocations: 10.640 GiB, 7.92% gc time, 47.42% compilation time: &lt;1% of which was recompilation)extrapolation for non-cylindrical projections ...[9, 10008, 1349, 18668]calculation of area term 1/2 ...auto-detect: (blocks = 20, threads = 512) 1.900327 seconds (675.72 k allocations: 41.221 MiB, 0.88% gc time, 2.99% compilation time)calculation of area term 2/2 ...auto-detect: (blocks = 20, threads = 512) 1.397813 seconds (42 allocations: 1.031 KiB, 1.63% gc time) 1.420977 seconds (105.35 k allocations: 6.507 MiB, 6.33% compilation time)calculation of distortion term 1/2 ...manually set: (blocks: 20, threads: 256) 11.279324 seconds (693.09 k allocations: 42.895 MiB, 1.76% gc time, 1.98% compilation time) 2.689853 seconds (6.00 M allocations: 6.182 GiB, 7.80% gc time, 3.85% compilation time)calculation of distortion term 2/2 ...manually set: (blocks: 20, threads: 256) 10.426663 seconds (100 allocations: 2.359 KiB) 2.949479 seconds (5.93 M allocations: 6.177 GiB, 8.74% gc time)post-processing of compensation ...global area distortion for kav7 is: 0.16145414480942347global maximum angular distortion for kav7 is: 0.22713971424958576global distortion for kav7 is: 0.2786752422902432