隔點預報GRIB繪製等值線矢量圖(一)

通過 在線geoJSON 繪製 http://geojson.io/#map=8/29.993/101.667

效果:

繪製效果:

 

測試數據點位:

{"29.70,103.15":0.38,"30.80,102.70":0.69,"30.25,102.25":0.78,"29.70,103.10":0.48,"30.25,102.20":0.96,"29.85,102.70":0.51,"30.80,102.75":0.36,"29.85,102.65":0.47,"30.50,102.95":0.32,"29.55,102.90":0.92,"30.50,102.90":0.38,"30.55,102.15":1.86,"29.55,102.95":1.37,"30.55,102.10":1.88,"29.40,103.20":0.0,"29.40,103.25":0.0,"29.25,102.90":0.54,"29.70,103.05":0.59,"30.80,102.80":0.24,"30.80,102.85":0.13,"29.85,102.80":0.46,"30.25,102.35":0.65,"30.20,102.95":0.81,"29.25,102.95":0.5,"29.70,103.00":0.71,"30.25,102.30":0.71,"29.85,102.75":0.55,"30.20,102.90":0.89,"30.55,102.05":1.93,"30.55,102.00":1.98,"29.40,101.95":0.0,"29.40,103.30":0.11,"29.40,103.35":0.14,"29.70,103.35":0.23,"29.70,101.95":0.18,"28.90,103.25":0.11,"30.80,102.90":0.0,"30.25,102.05":1.2,"30.80,102.95":0.0,"28.90,103.20":0.21,"30.20,102.80":0.96,"29.70,103.30":0.24,"30.20,102.85":0.94,"29.85,102.50":0.22,"30.25,102.00":1.16,"30.50,102.70":1.21,"29.40,103.05":0.15,"30.55,102.35":1.53,"29.85,102.45":0.23,"29.40,103.00":0.17,"30.50,102.75":1.06,"30.55,102.30":1.7,"29.70,103.25":0.25,"28.90,103.35":0.15,"28.90,103.30":0.13,"30.20,102.70":0.9,"30.25,102.15":1.15,"29.70,103.20":0.31,"30.25,102.10":1.23,"28.90,101.95":0.0,"30.20,102.75":0.98,"29.85,102.60":0.4,"29.85,102.55":0.31,"30.55,102.25":1.88,"30.50,102.80":0.8,"30.55,102.20":1.87,"29.40,103.10":0.14,"29.40,103.15":0.12,"30.50,102.85":0.54,"29.25,102.60":0.27,"29.55,102.45":0.2,"30.80,102.30":2.73,"29.15,103.10":0.71,"30.20,102.60":0.72,"29.25,102.65":0.31,"29.15,103.15":0.76,"30.25,102.65":0.95,"30.20,102.65":0.81,"30.50,102.50":1.71,"30.80,102.25":3.04,"30.25,102.60":0.89,"29.15,103.05":0.68,"30.55,102.55":1.65,"30.50,102.55":1.6,"30.55,102.50":1.82,"29.55,102.50":0.24,"29.45,103.00":0.53,"30.20,102.55":0.6,"29.45,103.05":0.41,"29.55,102.55":0.26,"29.80,102.95":0.56,"29.15,103.00":0.64,"30.80,102.40":2.12,"30.20,102.50":0.49,"29.25,102.55":0.28,"30.80,102.45":1.82,"30.25,102.75":0.91,"29.25,102.50":0.28,"30.50,102.60":1.49,"30.80,102.35":2.42,"30.25,102.70":0.93,"29.55,102.65":0.34,"30.55,102.45":1.67,"30.50,102.65":1.36,"29.45,103.10":0.28,"30.55,102.40":1.51,"29.55,102.60":0.27,"30.20,102.45":0.51,"29.25,102.80":0.49,"30.55,102.70":1.3,"29.85,102.90":0.35,"29.80,102.85":0.43,"30.80,102.50":1.52,"30.25,102.45":0.61,"29.80,102.80":0.47,"29.25,102.85":0.54,"30.80,102.55":1.39,"30.20,102.40":0.53,"29.85,102.95":0.42,"30.25,102.40":0.61,"29.85,102.85":0.37,"29.80,102.90":0.43,"30.55,102.75":1.25,"30.50,102.35":1.42,"29.55,102.75":0.61,"29.55,102.70":0.48,"30.50,102.30":1.53,"29.25,102.70":0.37,"30.20,102.35":0.57,"29.75,103.05":0.6,"29.80,102.75":0.55,"30.80,102.60":1.25,"30.20,102.30":0.64,"29.25,102.75":0.44,"30.25,102.55":0.75,"29.80,102.70":0.46,"30.80,102.65":1.02,"29.75,103.00":0.71,"30.50,102.40":1.44,"30.25,102.50":0.61,"29.55,102.85":0.68,"30.55,102.65":1.36,"30.50,102.45":1.57,"30.55,102.60":1.47,"29.55,102.80":0.65,"30.55,102.90":0.4,"29.45,103.35":0.15,"30.20,102.25":0.71,"29.50,102.80":0.56,"29.30,102.40":0.35,"30.85,102.70":0.62,"29.80,102.65":0.38,"29.25,102.20":0.49,"30.85,102.75":0.24,"29.80,102.60":0.3,"30.20,102.20":0.83,"30.35,103.25":0.16,"29.30,102.35":0.35,"30.35,103.20":0.21,"29.30,102.30":0.36,"29.25,102.15":0.56,"29.90,102.00":0.34,"29.50,102.75":0.55,"30.55,102.95":0.28,"29.90,102.05":0.36,"30.85,102.65":1.0,"30.55,102.80":0.94,"29.50,102.90":0.7,"29.80,102.55":0.25,"30.20,102.15":0.95,"29.30,102.50":0.34,"30.85,102.60":1.25,"29.25,102.10":0.47,"30.80,102.00":3.61,"30.20,102.10":1.0,"29.80,102.50":0.18,"28.95,101.95":0.0,"29.30,102.45":0.34,"30.35,103.15":0.27,"29.25,102.05":0.24,"30.35,103.10":0.33,"28.95,103.35":0.2,"29.50,102.85":0.57,"30.55,102.85":0.62,"30.85,102.55":1.35,"30.20,102.00":0.99,"29.45,103.15":0.19,"30.20,102.05":1.0,"29.80,102.45":0.19,"29.80,102.40":0.2,"29.25,102.45":0.3,"29.30,102.60":0.25,"30.85,102.50":1.45,"30.80,102.10":3.42,"29.25,102.40":0.32,"30.80,102.05":3.52,"29.30,102.55":0.29,"29.90,102.20":0.32,"30.90,103.35":0.0,"29.45,103.20":0.13,"29.90,102.25":0.28,"29.50,102.95":0.96,"29.45,103.25":0.0,"30.85,102.45":1.67,"29.80,102.35":0.2,"29.25,102.35":0.35,"29.80,102.30":0.21,"29.30,102.70":0.25,"30.85,102.40":1.9,"29.25,102.30":0.39,"30.80,102.20":3.17,"30.80,102.15":3.3,"30.35,103.35":0.31,"30.35,101.95":1.67,"30.35,103.30":0.23,"29.30,102.65":0.24,"29.25,102.25":0.42,"29.90,102.10":0.39,"29.45,103.30":0.0,"29.45,101.95":0.0,"29.90,102.15":0.38,"28.90,103.05":0.28,"30.85,102.35":2.17,"30.30,102.05":1.4,"30.90,103.20":0.0,"30.30,102.00":1.34,"29.80,102.25":0.22,"29.80,102.20":0.32,"28.90,103.00":0.22,"28.85,102.15":0.6,"28.85,102.10":0.43,"30.85,102.30":2.5,"28.95,103.00":0.39,"29.95,103.15":0.21,"29.85,102.20":0.32,"29.90,102.40":0.24,"29.85,102.25":0.25,"28.95,103.05":0.53,"29.95,103.10":0.2,"30.90,103.15":0.0,"30.40,103.00":0.42,"29.90,102.45":0.24,"30.40,103.05":0.35,"29.80,102.15":0.42,"30.90,103.30":0.0,"30.85,102.25":2.83,"28.90,103.15":0.32,"28.90,103.10":0.34,"28.85,102.05":0.21,"29.80,102.10":0.42,"30.90,101.95":3.5,"29.85,102.40":0.22,"30.85,102.20":2.96,"28.85,102.00":0.0,"29.95,103.25":0.28,"29.85,102.30":0.24,"29.30,102.00":0.0,"29.95,103.20":0.25,"29.90,102.30":0.26,"29.85,102.35":0.22,"30.90,103.25":0.0,"29.90,102.35":0.24,"30.40,103.10":0.29,"29.30,102.05":0.36,"30.40,103.15":0.22,"29.35,101.95":0.0,"30.30,102.25":0.84,"29.80,102.05":0.32,"30.85,102.10":3.21,"29.35,103.35":0.14,"30.85,102.15":3.09,"30.45,102.90":0.36,"29.80,102.00":0.21,"29.35,103.30":0.13,"30.90,103.00":0.0,"30.30,102.20":1.1,"29.25,102.00":0.0,"28.95,103.30":0.25,"29.85,102.00":0.28,"29.30,102.15":0.79,"28.95,103.20":0.48,"29.95,103.35":0.42,"29.90,102.60":0.5,"29.30,102.10":0.72,"30.40,103.20":0.16,"30.35,103.00":0.46,"29.95,101.95":0.49,"28.95,103.25":0.3,"29.95,103.30":0.35,"30.45,102.95":0.35,"29.90,102.65":0.56,"29.85,102.05":0.34,"29.35,103.25":0.12,"30.35,103.05":0.4,"30.40,103.25":0.0,"30.30,102.15":1.36,"30.85,102.00":3.42,"30.30,102.10":1.46,"30.45,102.80":0.67,"30.90,103.10":0.0,"30.85,102.05":3.32,"29.35,103.20":0.15,"29.30,102.25":0.36,"29.85,102.10":0.4,"28.95,103.10":0.68,"30.40,103.30":0.15,"28.95,103.15":0.66,"29.90,102.50":0.25,"29.85,102.15":0.4,"30.40,101.95":1.93,"29.30,102.20":0.57,"29.90,102.55":0.37,"30.40,103.35":0.19,"30.45,102.85":0.46,"30.90,103.05":0.0,"29.35,103.15":0.18,"30.00,102.60":0.44,"30.30,103.15":0.32,"29.35,102.45":0.29,"30.00,102.65":0.46,"29.35,102.40":0.29,"30.75,102.50":1.85,"30.30,103.10":0.38,"28.85,103.25":0.15,"30.75,102.55":1.6,"28.85,103.30":0.14,"29.90,102.80":0.45,"30.60,103.00":0.11,"28.85,101.95":0.0,"29.20,102.10":0.2,"29.20,102.15":0.29,"29.05,102.65":0.26,"29.90,102.85":0.33,"29.05,102.60":0.18,"29.35,102.35":0.31,"30.00,102.50":0.35,"30.75,102.40":2.13,"30.30,103.05":0.44,"30.00,102.55":0.4,"30.30,103.00":0.5,"29.35,102.30":0.34,"29.65,103.00":0.91,"30.60,103.05":0.12,"28.85,103.15":0.24,"30.75,102.45":1.99,"29.20,102.30":0.41,"28.85,103.10":0.25,"29.65,103.05":0.72,"28.85,103.20":0.21,"30.60,103.10":0.14,"29.20,102.20":0.39,"29.90,102.70":0.56,"30.60,103.15":0.15,"29.05,102.55":0.18,"29.50,102.05":0.6,"30.45,101.95":2.06,"29.65,103.10":0.54,"29.90,102.75":0.56,"29.20,102.25":0.5,"29.05,102.50":0.18,"30.45,103.30":0.0,"29.50,102.00":0.12,"29.35,102.25":0.37,"30.45,103.35":0.12,"29.35,102.20":0.55,"30.00,102.40":0.34,"30.75,102.75":1.25,"30.75,102.70":1.25,"30.30,103.35":0.42,"30.00,102.45":0.34,"28.85,103.05":0.21,"30.30,103.30":0.32,"30.30,101.95":1.4,"28.85,103.00":0.17,"30.60,103.20":0.15,"30.60,103.25":0.15,"29.50,102.15":1.11,"29.05,102.85":0.51,"30.45,103.20":0.13,"29.50,102.10":1.08,"29.05,102.80":0.55,"29.35,102.15":0.73,"30.45,103.25":0.0,"29.35,102.10":0.67,"30.75,102.65":1.24,"30.00,102.30":0.37,"30.30,103.25":0.21,"30.75,102.60":1.36,"30.00,102.35":0.35,"30.30,103.20":0.27,"30.45,103.15":0.19,"29.20,102.00":0.0,"29.90,102.90":0.28,"30.60,103.30":0.11,"30.60,101.95":2.48,"29.90,102.95":0.28,"29.95,103.00":0.22,"29.20,102.05":0.11,"30.60,103.35":0.0,"29.05,102.75":0.59,"29.50,102.25":0.27,"29.05,102.70":0.43,"30.45,103.10":0.24,"29.50,102.20":0.69,"29.35,102.05":0.35,"29.95,103.05":0.21,"30.75,102.10":3.14,"29.35,102.00":0.0,"30.75,102.15":3.03,"29.20,102.60":0.3,"29.20,102.55":0.26,"30.45,103.05":0.3,"29.50,102.35":0.18,"30.45,103.00":0.35,"29.50,102.30":0.23,"30.00,102.95":0.33,"30.75,102.05":3.27,"29.20,102.70":0.52,"30.75,102.00":3.4,"29.20,102.65":0.39,"29.05,102.95":0.67,"29.50,102.45":0.21,"29.05,102.90":0.55,"30.00,102.90":0.35,"29.50,102.40":0.18,"30.75,102.30":2.61,"29.50,102.60":0.28,"30.00,102.85":0.37,"29.20,102.40":0.28,"30.75,102.35":2.33,"29.00,102.80":0.47,"29.00,102.85":0.43,"29.20,102.35":0.33,"29.50,102.55":0.26,"30.00,102.80":0.39,"29.50,102.50":0.24,"29.50,102.70":0.44,"30.75,102.20":2.96,"30.00,102.75":0.42,"28.85,103.35":0.13,"30.75,102.25":2.88,"29.20,102.50":0.21,"29.20,102.45":0.24,"29.00,102.95":0.53,"29.50,102.65":0.34,"29.00,102.90":0.45,"30.00,102.70":0.44,"29.55,102.05":0.75,"29.55,102.00":0.14,"30.50,102.05":1.92,"30.05,102.65":0.36,"30.65,103.00":0.0,"29.00,102.55":0.2,"30.65,103.05":0.0,"29.75,102.45":0.23,"30.70,102.55":1.82,"29.00,102.60":0.26,"29.75,102.50":0.23,"29.00,102.65":0.33,"30.70,102.50":2.18,"30.50,102.15":1.7,"29.55,102.10":1.36,"30.50,102.10":1.78,"30.05,102.60":0.38,"29.55,102.15":1.37,"29.75,102.55":0.26,"29.00,102.70":0.42,"29.75,102.60":0.27,"30.70,102.65":1.46,"29.00,102.75":0.51,"30.70,102.60":1.46,"30.50,102.25":1.64,"30.05,102.75":0.33,"29.55,102.20":0.79,"30.05,102.70":0.35,"30.50,102.20":1.67,"30.05,102.45":0.4,"29.55,102.25":0.21,"29.20,102.80":0.62,"29.15,101.95":0.0,"29.15,103.30":0.66,"29.00,102.35":0.54,"29.20,102.85":0.59,"29.15,103.35":0.42,"30.25,102.85":0.76,"30.70,102.25":2.72,"29.75,102.65":0.32,"30.70,102.35":2.25,"29.20,102.75":0.66,"30.25,102.80":0.84,"29.05,102.00":0.0,"29.00,102.40":0.49,"30.70,102.30":2.48,"29.75,102.70":0.4,"29.55,102.30":0.18,"30.05,102.40":0.4,"29.55,102.35":0.16,"30.05,102.55":0.39,"29.00,102.45":0.31,"29.15,103.20":0.83,"30.15,103.00":0.71,"29.20,102.90":0.57,"29.20,102.95":0.56,"29.15,103.25":0.9,"30.15,103.05":0.62,"29.75,102.75":0.49,"30.25,102.95":0.66,"30.70,102.45":2.16,"29.75,102.85":0.54,"29.00,102.50":0.14,"29.75,102.80":0.52,"30.25,102.90":0.7,"30.70,102.40":2.14,"29.55,102.40":0.16,"30.05,102.50":0.4,"30.50,102.00":2.05,"29.60,101.95":0.14,"30.10,103.10":0.39,"30.75,102.95":0.0,"30.05,102.25":0.45,"29.60,103.35":0.21,"30.00,102.20":0.43,"29.60,103.30":0.18,"29.65,103.35":0.22,"30.00,102.25":0.39,"29.10,103.05":0.91,"30.15,103.10":0.52,"29.70,102.85":0.69,"29.00,102.15":0.12,"30.15,103.15":0.52,"29.10,103.00":0.72,"30.10,103.15":0.4,"29.75,102.95":0.65,"29.10,103.10":1.11,"29.05,102.25":0.39,"29.70,102.90":0.74,"30.70,102.95":0.0,"29.05,102.20":0.24,"29.00,102.20":0.26,"29.75,102.90":0.58,"30.05,102.20":0.5,"30.75,102.90":0.0,"30.70,102.90":0.0,"30.75,102.85":0.31,"30.65,103.30":0.15,"30.10,103.00":0.55,"30.65,101.95":3.0,"30.00,102.10":0.51,"30.75,102.80":0.78,"30.05,102.35":0.41,"29.60,103.20":0.3,"29.70,102.70":0.35,"30.65,103.35":0.11,"30.00,102.15":0.47,"29.10,103.15":1.14,"29.00,102.25":0.4,"29.60,103.25":0.15,"29.70,102.75":0.43,"30.10,103.05":0.47,"29.05,102.05":0.0,"30.15,103.25":0.69,"29.10,103.20":1.02,"29.05,102.15":0.0,"29.00,102.30":0.47,"30.15,103.20":0.61,"29.05,102.10":0.0,"29.70,102.80":0.56,"30.05,102.30":0.43,"29.60,103.10":0.7,"30.05,102.05":0.63,"30.10,101.95":0.83,"30.65,103.20":0.17,"30.10,103.30":0.71,"30.00,102.00":0.55,"30.05,102.00":0.67,"30.65,103.25":0.19,"30.15,103.35":0.88,"30.00,102.05":0.53,"30.10,103.35":0.81,"29.60,103.15":0.45,"29.10,103.25":0.9,"29.65,103.15":0.4,"29.10,101.95":0.0,"29.05,102.45":0.42,"29.10,103.30":0.63,"30.70,102.75":2.15,"29.65,103.20":0.31,"30.15,101.95":0.92,"30.15,103.30":0.79,"29.05,102.40":0.67,"30.70,102.70":1.81,"30.10,103.20":0.51,"29.60,103.00":1.36,"30.05,102.15":0.55,"30.65,103.10":0.13,"30.05,102.10":0.59,"29.65,103.25":0.22,"29.00,102.00":0.0,"30.65,103.15":0.16,"29.70,102.95":0.73,"29.00,102.05":0.0,"30.10,103.25":0.62,"29.10,103.35":0.36,"29.60,103.05":1.03,"29.05,102.35":0.71,"30.70,102.85":0.49,"29.00,102.10":0.0,"29.05,102.30":0.55,"29.65,101.95":0.15,"29.65,103.30":0.22,"30.70,102.80":1.32,"29.70,102.45":0.28,"30.10,102.00":0.76,"29.40,102.60":0.28,"30.10,102.05":0.74,"28.90,102.75":0.38,"29.70,102.40":0.26,"28.90,102.70":0.45,"29.15,102.00":0.0,"29.85,101.95":0.33,"29.10,102.85":0.55,"29.10,102.80":0.61,"29.85,103.35":0.28,"29.40,102.55":0.27,"29.70,102.35":0.25,"29.40,102.70":0.35,"30.25,103.05":0.54,"28.90,102.85":0.28,"29.70,102.30":0.25,"28.90,102.80":0.33,"30.25,103.00":0.62,"29.10,102.95":0.64,"28.90,102.90":0.24,"29.10,102.90":0.56,"30.40,102.00":1.99,"29.40,102.65":0.3,"30.40,102.05":1.79,"29.45,102.00":0.0,"30.10,102.20":0.61,"30.65,102.95":0.0,"28.90,102.55":0.32,"29.70,102.60":0.24,"30.10,102.25":0.54,"29.70,102.65":0.26,"28.90,102.50":0.15,"28.95,102.10":0.0,"29.85,103.10":0.37,"29.85,103.15":0.32,"28.95,102.15":0.16,"30.55,103.05":0.15,"30.55,103.00":0.15,"29.40,102.30":0.32,"30.40,102.10":1.6,"30.40,102.15":1.44,"29.40,102.35":0.26,"30.65,102.90":0.14,"30.10,102.10":0.71,"30.65,102.85":0.58,"29.40,102.50":0.26,"29.70,102.50":0.29,"28.90,102.65":0.53,"29.85,103.30":0.25,"28.90,102.60":0.48,"30.10,102.15":0.67,"29.70,102.55":0.26,"28.95,102.00":0.0,"29.85,103.20":0.27,"29.85,103.25":0.22,"29.40,102.40":0.23,"30.40,102.20":1.31,"28.95,102.05":0.0,"30.40,102.25":1.19,"29.40,102.45":0.24,"30.65,102.80":1.42,"30.20,103.35":0.82,"29.25,103.30":0.34,"29.45,102.25":0.34,"29.70,102.05":0.59,"29.55,103.15":0.51,"29.25,103.35":0.25,"30.35,102.90":0.45,"29.75,102.05":0.45,"30.80,103.00":0.0,"30.25,103.35":0.62,"29.15,102.40":0.32,"29.75,102.00":0.18,"30.70,102.05":3.02,"29.25,101.95":0.0,"30.20,103.30":0.72,"30.20,101.95":1.05,"29.15,102.45":0.24,"30.25,101.95":1.23,"29.70,102.00":0.14,"30.25,103.30":0.52,"29.40,102.15":0.68,"30.70,102.10":2.86,"30.35,102.95":0.45,"30.55,103.25":0.11,"29.55,103.20":0.29,"29.40,102.10":0.62,"30.50,103.25":0.0,"29.45,102.30":0.28,"30.50,103.20":0.13,"30.55,103.20":0.13,"29.45,102.35":0.22,"29.25,103.20":0.4,"30.20,103.25":0.63,"29.25,103.25":0.43,"29.55,103.25":0.0,"29.75,102.15":0.73,"30.80,103.10":0.0,"29.15,102.30":0.45,"30.20,103.20":0.58,"29.15,102.35":0.39,"30.70,102.15":2.76,"30.35,102.80":0.67,"29.75,102.10":0.72,"30.50,103.30":0.0,"30.35,102.85":0.52,"30.70,102.20":2.74,"30.55,103.15":0.14,"30.80,103.05":0.0,"29.25,103.15":0.38,"29.40,102.20":0.53,"30.55,103.10":0.15,"29.55,103.30":0.14,"29.55,101.95":0.12,"29.45,102.40":0.2,"30.50,103.35":0.0,"29.40,102.25":0.38,"30.50,101.95":2.02,"30.20,103.15":0.53,"29.70,102.25":0.25,"29.45,102.05":0.44,"29.55,103.35":0.2,"28.90,102.95":0.23,"30.25,103.15":0.43,"29.15,102.20":0.32,"29.75,102.25":0.24,"29.15,102.25":0.52,"29.70,102.20":0.65,"29.75,102.20":0.48,"30.25,103.10":0.46,"30.80,103.20":0.0,"30.20,103.10":0.55,"29.75,102.30":0.23,"29.15,102.15":0.13,"30.80,103.15":0.1,"30.05,102.85":0.41,"30.50,103.05":0.23,"30.50,103.00":0.25,"29.45,102.10":0.78,"30.05,102.80":0.37,"29.70,102.15":1.05,"29.45,102.15":0.83,"30.20,103.05":0.64,"30.80,101.95":3.71,"29.15,102.10":0.0,"30.25,103.25":0.42,"29.75,102.35":0.24,"30.80,103.35":0.16,"30.80,103.30":0.11,"29.70,102.10":1.03,"30.20,103.00":0.73,"30.25,103.20":0.42,"29.75,102.40":0.22,"29.15,102.05":0.0,"30.70,102.00":3.19,"29.40,102.05":0.34,"30.80,103.25":0.0,"30.50,103.15":0.17,"30.05,102.95":0.4,"30.55,103.35":0.0,"29.45,102.20":0.58,"30.05,102.90":0.42,"30.55,103.30":0.0,"29.40,102.00":0.0,"30.50,103.10":0.2,"30.55,101.95":1.99,"30.90,102.95":0.0,"29.80,103.35":0.24,"29.80,101.95":0.26,"28.95,102.80":0.39,"29.80,103.30":0.23,"30.35,102.50":1.05,"29.95,102.90":0.28,"30.90,102.90":0.0,"29.30,103.05":0.32,"30.40,102.70":1.06,"28.95,102.75":0.43,"29.30,103.00":0.37,"29.95,102.85":0.34,"30.35,102.55":1.15,"29.45,102.70":0.4,"30.40,102.75":0.8,"29.45,102.75":0.47,"30.85,103.35":0.13,"28.90,102.05":0.0,"28.90,102.00":0.0,"29.80,103.25":0.23,"29.80,103.20":0.32,"28.95,102.70":0.42,"30.85,101.95":3.62,"30.85,103.30":0.0,"28.95,102.65":0.42,"29.30,103.15":0.24,"30.40,102.80":0.63,"30.35,102.40":0.94,"30.40,102.85":0.46,"30.35,102.45":1.0,"29.95,102.95":0.25,"29.45,102.80":0.47,"29.30,103.10":0.28,"29.45,102.85":0.46,"29.45,102.45":0.22,"30.90,102.70":0.59,"30.85,103.25":0.0,"29.25,103.10":0.38,"30.90,102.75":0.18,"29.80,103.15":0.4,"29.30,103.30":0.16,"29.80,103.10":0.5,"30.85,103.20":0.0,"30.35,102.70":1.01,"30.35,102.75":0.82,"30.40,102.90":0.38,"29.30,103.25":0.17,"30.40,102.95":0.4,"29.30,103.20":0.2,"29.25,103.05":0.42,"29.45,102.50":0.24,"29.45,102.55":0.26,"29.80,103.05":0.6,"30.90,102.85":0.0,"29.25,103.00":0.46,"30.85,103.15":0.0,"29.35,102.95":0.35,"28.95,102.90":0.34,"29.35,102.90":0.43,"29.80,103.00":0.7,"28.95,102.95":0.36,"30.85,103.10":0.0,"30.35,102.60":1.25,"30.90,102.80":0.13,"30.35,102.65":1.2,"28.95,102.85":0.35,"29.30,103.35":0.15,"29.30,101.95":0.0,"29.45,102.60":0.28,"29.45,102.65":0.33,"30.90,102.50":1.39,"30.85,103.00":0.0,"28.90,102.35":0.22,"30.90,102.55":1.32,"29.35,102.85":0.45,"30.85,103.05":0.0,"28.90,102.30":0.38,"29.95,102.50":0.3,"29.35,102.80":0.39,"28.95,102.40":0.25,"30.35,102.10":1.53,"28.95,102.30":0.36,"29.95,102.45":0.29,"30.40,102.30":1.17,"29.90,103.10":0.25,"29.95,102.40":0.28,"28.95,102.35":0.31,"30.90,102.45":1.53,"29.40,102.95":0.27,"30.35,102.15":1.4,"29.90,103.15":0.23,"30.40,102.35":1.16,"29.35,102.75":0.33,"30.90,102.60":1.25,"28.90,102.45":0.15,"30.90,102.65":1.01,"28.90,102.40":0.14,"29.95,102.60":0.51,"29.35,102.70":0.3,"29.85,103.00":0.49,"29.95,102.55":0.4,"28.95,102.20":0.29,"30.40,102.40":1.19,"28.95,102.25":0.42,"29.85,103.05":0.43,"30.35,102.00":1.66,"30.40,102.45":1.28,"29.90,103.00":0.28,"30.35,102.05":1.59,"29.90,103.05":0.26,"28.90,102.15":0.29,"29.35,102.65":0.27,"30.90,102.30":2.24,"29.35,102.60":0.26,"29.40,102.80":0.4,"28.90,102.10":0.18,"29.95,102.70":0.53,"28.95,102.60":0.35,"28.95,102.55":0.23,"30.35,102.30":0.97,"29.90,103.30":0.27,"30.35,102.35":0.94,"29.95,102.65":0.55,"29.90,101.95":0.4,"29.45,102.90":0.47,"30.40,102.50":1.37,"30.40,102.55":1.4,"29.40,102.75":0.4,"30.90,102.25":2.58,"29.45,102.95":0.5,"29.90,103.35":0.32,"29.40,102.90":0.36,"29.35,102.55":0.28,"30.90,102.40":1.67,"29.35,102.50":0.3,"28.90,102.25":0.54,"28.90,102.20":0.42,"29.95,102.80":0.42,"28.95,102.50":0.0,"30.35,102.20":1.21,"30.35,102.25":1.01,"29.95,102.75":0.51,"30.40,102.60":1.43,"28.95,102.45":0.17,"29.90,103.20":0.22,"30.90,102.35":1.9,"29.90,103.25":0.22,"30.40,102.65":1.31,"29.40,102.85":0.41,"30.75,103.20":0.13,"29.35,103.10":0.21,"30.00,103.30":0.5,"30.00,101.95":0.61,"30.45,102.70":1.12,"30.90,102.10":2.97,"30.30,102.45":0.71,"30.00,103.35":0.57,"30.30,102.40":0.7,"29.65,102.25":0.25,"30.75,103.25":0.12,"28.85,102.55":0.52,"30.15,102.80":0.89,"28.85,102.60":0.68,"30.60,102.30":1.98,"29.95,102.00":0.43,"29.05,103.35":0.31,"30.15,102.85":0.9,"30.60,102.35":1.79,"29.05,101.95":0.0,"29.65,102.30":0.25,"29.05,103.30":0.6,"30.45,102.75":0.88,"30.90,102.05":3.08,"29.35,103.05":0.24,"29.95,102.05":0.43,"29.60,102.95":1.12,"29.35,103.00":0.27,"30.00,103.20":0.33,"30.75,103.10":0.11,"30.90,102.20":2.71,"30.30,102.35":0.72,"30.45,102.60":1.51,"30.00,103.25":0.42,"29.65,102.35":0.24,"30.30,102.30":0.78,"30.75,103.15":0.13,"28.85,102.45":0.33,"28.85,102.50":0.37,"29.05,103.25":0.9,"30.15,102.90":0.87,"30.60,102.40":1.76,"30.15,102.95":0.79,"29.65,102.40":0.25,"29.95,102.10":0.42,"30.60,102.45":1.89,"29.05,103.20":1.21,"30.90,102.15":2.84,"30.45,102.65":1.37,"29.95,102.15":0.4,"29.60,102.85":0.72,"30.00,103.10":0.23,"30.30,102.65":1.09,"29.65,102.00":0.12,"30.00,103.15":0.25,"28.85,102.35":0.39,"30.30,102.60":1.06,"29.65,102.05":0.68,"29.95,102.25":0.32,"28.85,102.40":0.29,"29.95,102.20":0.36,"30.60,102.55":1.75,"30.45,102.50":1.59,"30.60,102.50":2.02,"30.45,102.55":1.55,"29.60,102.90":0.88,"30.75,101.95":3.54,"30.75,103.30":0.14,"30.30,102.55":0.9,"30.00,103.00":0.3,"29.60,102.75":0.53,"30.90,102.00":3.2,"28.85,102.25":0.86,"30.30,102.50":0.73,"29.65,102.10":1.24,"30.00,103.05":0.26,"29.65,102.15":1.26,"30.75,103.35":0.15,"28.85,102.20":0.73,"30.60,102.65":1.43,"29.95,102.35":0.28,"28.85,102.30":0.62,"29.65,102.20":0.76,"29.95,102.30":0.3,"30.45,102.40":1.36,"30.60,102.60":1.49,"29.60,102.80":0.62,"30.45,102.45":1.48,"30.30,102.85":0.59,"29.20,103.30":0.54,"30.30,102.80":0.71,"29.30,102.80":0.37,"29.20,101.95":0.0,"30.60,102.75":1.75,"29.20,103.25":0.72,"29.50,103.05":0.9,"29.30,102.75":0.26,"30.45,102.30":1.36,"29.50,103.00":1.22,"30.60,102.70":1.59,"30.45,102.35":1.32,"29.30,102.95":0.44,"30.30,102.75":0.84,"29.30,102.90":0.51,"30.30,102.70":0.96,"30.45,102.25":1.39,"29.20,103.35":0.37,"30.60,102.85":0.6,"28.85,102.95":0.17,"28.85,102.90":0.17,"29.30,102.85":0.49,"29.50,103.15":0.36,"30.45,102.20":1.46,"29.50,103.10":0.59,"30.60,102.80":1.18,"30.75,103.00":0.0,"30.85,102.90":0.0,"30.75,103.05":0.0,"30.85,102.95":0.0,"28.85,102.75":0.38,"30.45,102.15":1.53,"28.85,102.85":0.21,"30.60,102.95":0.19,"29.20,103.00":0.55,"29.20,103.05":0.52,"28.85,102.80":0.29,"29.50,103.25":0.0,"30.60,102.90":0.28,"30.45,102.10":1.68,"29.50,103.20":0.21,"30.30,102.95":0.51,"30.85,102.80":0.17,"28.85,102.65":0.68,"29.20,103.20":0.62,"30.30,102.90":0.52,"30.85,102.85":0.0,"30.45,102.05":1.9,"29.20,103.10":0.49,"28.85,102.70":0.53,"29.20,103.15":0.53,"29.50,103.35":0.17,"29.50,101.95":0.1,"30.45,102.00":2.13,"29.50,103.30":0.12,"30.10,102.85":0.65,"30.05,103.35":0.73,"30.65,102.30":2.27,"29.15,102.80":0.68,"29.60,102.20":0.77,"30.15,102.00":0.85,"30.65,102.35":2.06,"29.15,102.85":0.6,"29.60,102.25":0.23,"29.75,103.15":0.4,"29.00,103.25":0.62,"30.15,102.05":0.84,"29.75,103.10":0.49,"30.70,103.15":0.15,"30.70,103.25":0.18,"29.75,103.20":0.32,"29.00,101.95":0.0,"29.00,103.30":0.44,"30.70,103.20":0.17,"30.05,101.95":0.73,"30.05,103.30":0.64,"30.10,102.80":0.63,"30.10,102.75":0.6,"30.10,102.70":0.56,"30.65,102.20":2.48,"29.60,102.10":1.3,"29.15,102.70":0.58,"29.00,103.35":0.25,"29.15,102.75":0.76,"29.60,102.15":1.32,"29.75,103.25":0.24,"30.65,102.25":2.48,"29.10,102.05":0.0,"30.15,102.10":0.83,"30.15,102.15":0.79,"29.10,102.00":0.0,"29.75,103.30":0.24,"30.70,103.35":0.13,"29.75,101.95":0.22,"30.70,101.95":3.37,"30.70,103.30":0.16,"30.05,103.15":0.29,"29.15,102.60":0.29,"29.60,102.00":0.13,"30.65,102.10":2.54,"29.60,102.05":0.71,"29.10,102.15":0.11,"29.15,102.65":0.41,"30.15,102.20":0.71,"30.65,102.15":2.47,"29.10,102.10":0.0,"29.75,103.35":0.23,"29.00,103.05":0.88,"30.15,102.25":0.63,"29.65,102.90":0.85,"29.10,102.20":0.28,"30.70,103.00":0.0,"29.65,102.95":0.88,"29.00,103.10":1.15,"30.05,103.10":0.25,"29.55,103.00":1.82,"29.55,103.05":1.34,"29.15,102.50":0.17,"30.05,103.25":0.55,"30.10,102.95":0.59,"30.65,102.00":2.85,"29.10,102.25":0.45,"29.00,103.15":1.15,"30.65,102.05":2.7,"30.70,103.05":0.0,"30.15,102.35":0.51,"29.15,102.55":0.23,"29.10,102.30":0.5,"29.00,103.20":0.88,"30.70,103.10":0.12,"30.15,102.30":0.57,"30.05,103.20":0.42,"30.10,102.90":0.64,"29.55,103.10":0.85,"30.65,102.70":1.89,"29.60,102.60":0.24,"30.65,102.75":2.26,"29.60,102.65":0.31,"30.10,102.40":0.43,"30.15,102.45":0.45,"29.65,102.65":0.26,"30.10,102.45":0.42,"29.10,102.35":0.55,"29.10,102.40":0.49,"29.65,102.70":0.34,"30.15,102.40":0.47,"29.65,102.75":0.44,"29.60,102.70":0.41,"30.10,102.30":0.5,"30.65,102.60":1.5,"29.60,102.50":0.27,"30.05,103.05":0.32,"29.60,102.55":0.26,"30.65,102.65":1.51,"30.05,103.00":0.38,"30.15,102.55":0.5,"30.10,102.35":0.46,"29.10,102.45":0.33,"29.65,102.80":0.6,"29.10,102.50":0.18,"29.00,103.00":0.61,"29.65,102.85":0.75,"30.15,102.50":0.42,"30.60,102.00":2.41,"29.60,102.40":0.21,"30.10,102.65":0.52,"30.65,102.50":2.21,"29.60,102.45":0.24,"30.10,102.60":0.48,"30.65,102.55":1.86,"30.60,102.05":2.31,"29.65,102.45":0.28,"30.15,102.65":0.67,"29.10,102.55":0.21,"30.60,102.10":2.21,"29.05,103.15":1.52,"29.65,102.50":0.32,"29.10,102.60":0.24,"30.15,102.60":0.58,"29.05,103.10":1.5,"29.60,102.30":0.22,"29.15,102.90":0.58,"30.10,102.55":0.45,"30.65,102.40":2.0,"30.10,102.50":0.41,"30.65,102.45":2.11,"29.65,102.55":0.28,"30.15,102.75":0.87,"30.60,102.15":2.16,"29.15,102.95":0.61,"29.60,102.35":0.2,"29.10,102.65":0.34,"29.05,103.05":1.15,"30.15,102.70":0.77,"30.60,102.20":2.17,"29.10,102.75":0.67,"29.65,102.60":0.22,"30.60,102.25":2.18,"29.05,103.00":0.8,"29.10,102.70":0.51}

首先需要把隔點數據初始化成表結構類型

這種數據結構

通過Wcontour  構建一個虛擬表

//繪線網格
        List<Border> _borders = Contour.tracingBorders(data, _X, _Y, S1, _undefData);

再生成等值線

 // 生成等值線
        cPolylineList = Contour.tracingContourLines(data, _X, _Y, dataInterval.length, dataInterval, _undefData, _borders, S1);
        cPolylineList = Contour.smoothLines(cPolylineList);// 平滑

再將數據打包成List 等值線數組

cPolygonList = Contour.tracingPolygons(data, cPolylineList, _borders, dataInterval);

再通過組裝geoJson

private  String getPolygonGeoJson(List<Polygon> cPolygonList) {
        String geo = null;
        String geometry = " { \"type\":\"Feature\",\"geometry\":";
        String properties = ",\"properties\":{ \"hvalue\":";

        String head = "{\"type\": \"FeatureCollection\"," + "\"features\": [";
        String end = "  ] }";
        if (cPolygonList == null || cPolygonList.size() == 0) {
            return null;
        }
        try {
            for (Polygon pPolygon : cPolygonList) {

                List<Object> ptsTotal = new ArrayList<Object>();
                List<Object> pts = new ArrayList<Object>();

                PolyLine pline = pPolygon.OutLine;

                for (PointD ptD : pline.PointList) {
                    List<Double> pt = new ArrayList<Double>();
                    pt.add(ptD.X);
                    pt.add(ptD.Y);
                    pts.add(pt);
                }

                ptsTotal.add(pts);

                if (pPolygon.HasHoles()) {
                    for (PolyLine cptLine : pPolygon.HoleLines) {
                        List<Object> cpts = new ArrayList<Object>();
                        for (PointD ccptD : cptLine.PointList) {
                            List<Double> pt = new ArrayList<Double>();
                            pt.add(ccptD.X);
                            pt.add(ccptD.Y);
                            cpts.add(pt);
                        }
                        if (cpts.size() > 0) {
                            ptsTotal.add(cpts);
                        }
                    }
                }

                JSONObject js = new JSONObject();
                js.put("type", "Polygon");
                js.put("coordinates", ptsTotal);
                double hv = pPolygon.HighValue;
                double lv = pPolygon.LowValue;

                if (hv == lv) {
                    if (pPolygon.IsClockWise) {
                        if (!pPolygon.IsHighCenter) {
                            hv = hv - 0.1;
                            lv = lv - 0.1;
                        }

                    } else {
                        if (!pPolygon.IsHighCenter) {
                            hv = hv - 0.1;
                            lv = lv - 0.1;
                        }
                    }
                } else {
                    if (!pPolygon.IsClockWise) {
                        lv = lv + 0.1;
                    } else {
                        if (pPolygon.IsHighCenter) {
                            hv = hv - 0.1;
                        }
                    }

                }

                geo = geometry + js.toString() + properties + hv
                        + ", \"lvalue\":" + lv + "} }" + "," + geo;

            }
            if (geo.contains(",")) {
                geo = geo.substring(0, geo.lastIndexOf(","));
            }

            geo = head + geo + end;
        } catch (Exception e) {
            e.printStackTrace();
            return geo;
        }
        return geo;
    }

最後生成geoJson 字符串。

有了geoJson 串生成等值線圖片就已經完成一半,接着用Graphics2D 來繪製我們的等值線

首先 需要確定的是我們繪製的點也就是經緯度的起始位置和結束位置,通過經緯度轉像素點的方式在自己的畫布上位置繪製我們的圖形

	public void draw(String backgroundImagePath,  String imageSavePath, String geojson) {
		
		try {
			// 得到Graphics2D 對象
			BufferedImage saveImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
			Graphics2D graphics2d = saveImage.createGraphics();
			graphics2d.setBackground(Color.black);
			// 獲取底圖寬高
			marginWidth = width / 100;
			marginHeight = height / 100;
////			// 繪製等值線
			drawIsopleth(graphics2d , geojson);
			graphics2d.dispose();
			File f = new File(imageSavePath);
			if (f.exists()) {
				f.delete();
			}
			ImageIO.write(saveImage, "PNG", f);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
/**
	 * 
	 * TODO(繪製等值線)   
	 * @param graphics2d
	 * @param geojson       
	 * @return: void      
	 * @throws
	 */
	public void drawIsopleth(Graphics2D graphics2d, String geojson) {
		if(geojson == null) {
			return ;
		} 
		JSONObject obj =  JSON.parseObject(geojson);
		List<JSONObject>  list = obj.getObject("features",List.class);
		int count = 0;
		for (JSONObject item : list) {
			double hvalue =  item.getJSONObject("properties").getDoubleValue("hvalue");
			//這裏顏色可以自己定義
			graphics2d.setColor(getRGB(hvalue));
			JSONObject geometry = item.getJSONObject("geometry");
			if(hvalue >= 1) {//條件也可以自己定義
				//繪製多面
				drawMultiPolygon(graphics2d,geometry.getJSONArray("coordinates"));
				
			}
			count+=20;
		}
		
	}

繪製等值線,通過經緯度轉像素方法

	/**
	 * 將經緯度座標變換到圖片像素座標
	 * 
	 * @param coord
	 * @return
	 */
	public double[] transferCoord(double[] coord) {
		int h = 1000;
		int w = 1000;
		//雅安經緯度地理座標區域的範圍
        double left = 101.91;
        double right = 103.395;
        double bottom = 28.845;
        double top = 30.935;
        //將參照點經緯度轉化爲弧度,並得到之後計算橫軸縱軸上距離的中間量。
      	double scaleX  = ((right-left)*3600)/h;
      	double scaleY  = ((top-bottom)*3600)/w;
        
		double x = (coord[0] - left)*3600/scaleX;
		double y = (top - coord[1])*3600/scaleY;
		return new double[] { x , y };
	}

最後繪製出自己的矢量圖

 

示例代碼地址  https://gitee.com/umbrellall1/geoJsonToImage

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章