commit 2d695bcbb71859869863c5fcaf926091cccdc863 Author: zzl <961867786@qq.com> Date: Thu May 20 08:47:59 2021 +0800 初始化 diff --git a/.idea/$PROJECT_FILE$ b/.idea/$PROJECT_FILE$ new file mode 100644 index 0000000..58b7e3e --- /dev/null +++ b/.idea/$PROJECT_FILE$ @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..5c98b42 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..2a2fcd4 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +springbootshaper \ No newline at end of file diff --git a/.idea/artifacts/gis_geotools_war.xml b/.idea/artifacts/gis_geotools_war.xml new file mode 100644 index 0000000..1021d3c --- /dev/null +++ b/.idea/artifacts/gis_geotools_war.xml @@ -0,0 +1,14 @@ + + + $PROJECT_DIR$/target + + + gis_geotools + war + + + + + + + \ No newline at end of file diff --git a/.idea/artifacts/gis_geotools_war_exploded.xml b/.idea/artifacts/gis_geotools_war_exploded.xml new file mode 100644 index 0000000..36aad06 --- /dev/null +++ b/.idea/artifacts/gis_geotools_war_exploded.xml @@ -0,0 +1,146 @@ + + + $PROJECT_DIR$/target/gis_geotools-0.1.1-SNAPSHOT + + + true + gis_geotools + war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/artifacts/springbootshaper_war.xml b/.idea/artifacts/springbootshaper_war.xml new file mode 100644 index 0000000..4429093 --- /dev/null +++ b/.idea/artifacts/springbootshaper_war.xml @@ -0,0 +1,14 @@ + + + $PROJECT_DIR$/target + + + springbootshaper + war + + + + + + + \ No newline at end of file diff --git a/.idea/artifacts/springbootshaper_war_exploded.xml b/.idea/artifacts/springbootshaper_war_exploded.xml new file mode 100644 index 0000000..53b9a41 --- /dev/null +++ b/.idea/artifacts/springbootshaper_war_exploded.xml @@ -0,0 +1,146 @@ + + + $PROJECT_DIR$/target/gis_geotools-0.1.1-SNAPSHOT + + + true + springbootshaper + war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..bc969b0 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..f86397b --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml new file mode 100644 index 0000000..6fec8f4 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml new file mode 100644 index 0000000..9eb8596 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_alibaba_fastjson_1_2_74.xml b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_74.xml new file mode 100644 index 0000000..d3dbd7e --- /dev/null +++ b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_74.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_conversantmedia_disruptor_1_2_13.xml b/.idea/libraries/Maven__com_conversantmedia_disruptor_1_2_13.xml new file mode 100644 index 0000000..bdf000e --- /dev/null +++ b/.idea/libraries/Maven__com_conversantmedia_disruptor_1_2_13.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml b/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml new file mode 100644 index 0000000..bbd3a88 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_classmate_1_4_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_2.xml new file mode 100644 index 0000000..6447563 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_2.xml new file mode 100644 index 0000000..4923956 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_2.xml new file mode 100644 index 0000000..bb59715 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_2.xml new file mode 100644 index 0000000..c22af69 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_2.xml new file mode 100644 index 0000000..dd6fb59 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_2.xml b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_2.xml new file mode 100644 index 0000000..22aba0a --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml new file mode 100644 index 0000000..1c380d0 --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_1_3.xml b/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_1_3.xml new file mode 100644 index 0000000..2343a7f --- /dev/null +++ b/.idea/libraries/Maven__com_google_errorprone_error_prone_annotations_2_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_guava_guava_25_1_jre.xml b/.idea/libraries/Maven__com_google_guava_guava_25_1_jre.xml new file mode 100644 index 0000000..9d28def --- /dev/null +++ b/.idea/libraries/Maven__com_google_guava_guava_25_1_jre.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_1.xml b/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_1.xml new file mode 100644 index 0000000..c06f999 --- /dev/null +++ b/.idea/libraries/Maven__com_google_j2objc_j2objc_annotations_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml new file mode 100644 index 0000000..ea70fe1 --- /dev/null +++ b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml new file mode 100644 index 0000000..f19f6eb --- /dev/null +++ b/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_miglayout_miglayout_swing_3_7.xml b/.idea/libraries/Maven__com_miglayout_miglayout_swing_3_7.xml new file mode 100644 index 0000000..64bb065 --- /dev/null +++ b/.idea/libraries/Maven__com_miglayout_miglayout_swing_3_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml b/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml new file mode 100644 index 0000000..b8581a6 --- /dev/null +++ b/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml b/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml new file mode 100644 index 0000000..13afda2 --- /dev/null +++ b/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_dbcp_commons_dbcp_1_4.xml b/.idea/libraries/Maven__commons_dbcp_commons_dbcp_1_4.xml new file mode 100644 index 0000000..49c39ce --- /dev/null +++ b/.idea/libraries/Maven__commons_dbcp_commons_dbcp_1_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_io_commons_io_2_6.xml b/.idea/libraries/Maven__commons_io_commons_io_2_6.xml new file mode 100644 index 0000000..d722698 --- /dev/null +++ b/.idea/libraries/Maven__commons_io_commons_io_2_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_pool_commons_pool_1_6.xml b/.idea/libraries/Maven__commons_pool_commons_pool_1_6.xml new file mode 100644 index 0000000..8393648 --- /dev/null +++ b/.idea/libraries/Maven__commons_pool_commons_pool_1_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_geocore_1_1_25.xml b/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_geocore_1_1_25.xml new file mode 100644 index 0000000..fe1fae5 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_geocore_1_1_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_streams_1_1_25.xml b/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_streams_1_1_25.xml new file mode 100644 index 0000000..6b543f2 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_streams_1_1_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_tiff_1_1_25.xml b/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_tiff_1_1_25.xml new file mode 100644 index 0000000..e09b99e --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_tiff_1_1_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_utilities_1_1_25.xml b/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_utilities_1_1_25.xml new file mode 100644 index 0000000..8958bf6 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_imageio_ext_imageio_ext_utilities_1_1_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_affine_jt_affine_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_affine_jt_affine_1_1_1.xml new file mode 100644 index 0000000..fee267b --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_affine_jt_affine_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_algebra_jt_algebra_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_algebra_jt_algebra_1_1_1.xml new file mode 100644 index 0000000..c19554e --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_algebra_jt_algebra_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_bandcombine_jt_bandcombine_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_bandcombine_jt_bandcombine_1_1_1.xml new file mode 100644 index 0000000..22c5665 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_bandcombine_jt_bandcombine_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_bandmerge_jt_bandmerge_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_bandmerge_jt_bandmerge_1_1_1.xml new file mode 100644 index 0000000..60fbb9e --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_bandmerge_jt_bandmerge_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_bandselect_jt_bandselect_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_bandselect_jt_bandselect_1_1_1.xml new file mode 100644 index 0000000..5ab8020 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_bandselect_jt_bandselect_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_binarize_jt_binarize_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_binarize_jt_binarize_1_1_1.xml new file mode 100644 index 0000000..3ff7f52 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_binarize_jt_binarize_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_border_jt_border_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_border_jt_border_1_1_1.xml new file mode 100644 index 0000000..cc3d12b --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_border_jt_border_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_buffer_jt_buffer_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_buffer_jt_buffer_1_1_1.xml new file mode 100644 index 0000000..e6d7c81 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_buffer_jt_buffer_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_classifier_jt_classifier_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_classifier_jt_classifier_1_1_1.xml new file mode 100644 index 0000000..41c8855 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_classifier_jt_classifier_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_colorconvert_jt_colorconvert_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_colorconvert_jt_colorconvert_1_1_1.xml new file mode 100644 index 0000000..c9f8bb4 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_colorconvert_jt_colorconvert_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_colorindexer_jt_colorindexer_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_colorindexer_jt_colorindexer_1_1_1.xml new file mode 100644 index 0000000..54f6090 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_colorindexer_jt_colorindexer_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_crop_jt_crop_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_crop_jt_crop_1_1_1.xml new file mode 100644 index 0000000..08f1afb --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_crop_jt_crop_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_errordiffusion_jt_errordiffusion_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_errordiffusion_jt_errordiffusion_1_1_1.xml new file mode 100644 index 0000000..d5e2696 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_errordiffusion_jt_errordiffusion_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_format_jt_format_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_format_jt_format_1_1_1.xml new file mode 100644 index 0000000..3e5ca19 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_format_jt_format_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_imagefunction_jt_imagefunction_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_imagefunction_jt_imagefunction_1_1_1.xml new file mode 100644 index 0000000..d7cc095 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_imagefunction_jt_imagefunction_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_iterators_jt_iterators_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_iterators_jt_iterators_1_1_1.xml new file mode 100644 index 0000000..6aaf1c2 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_iterators_jt_iterators_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_lookup_jt_lookup_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_lookup_jt_lookup_1_1_1.xml new file mode 100644 index 0000000..7ef01c6 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_lookup_jt_lookup_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_mosaic_jt_mosaic_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_mosaic_jt_mosaic_1_1_1.xml new file mode 100644 index 0000000..95e3c06 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_mosaic_jt_mosaic_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_nullop_jt_nullop_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_nullop_jt_nullop_1_1_1.xml new file mode 100644 index 0000000..3cac309 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_nullop_jt_nullop_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_orderdither_jt_orderdither_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_orderdither_jt_orderdither_1_1_1.xml new file mode 100644 index 0000000..e0945e1 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_orderdither_jt_orderdither_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_piecewise_jt_piecewise_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_piecewise_jt_piecewise_1_1_1.xml new file mode 100644 index 0000000..1c5e5e3 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_piecewise_jt_piecewise_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_rescale_jt_rescale_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_rescale_jt_rescale_1_1_1.xml new file mode 100644 index 0000000..624f59b --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_rescale_jt_rescale_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_rlookup_jt_rlookup_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_rlookup_jt_rlookup_1_1_1.xml new file mode 100644 index 0000000..27861bb --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_rlookup_jt_rlookup_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_scale2_jt_scale2_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_scale2_jt_scale2_1_1_1.xml new file mode 100644 index 0000000..8eff0bb --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_scale2_jt_scale2_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_scale_jt_scale_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_scale_jt_scale_1_1_1.xml new file mode 100644 index 0000000..8a10f37 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_scale_jt_scale_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_shadedrelief_jt_shadedrelief_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_shadedrelief_jt_shadedrelief_1_1_1.xml new file mode 100644 index 0000000..e898f77 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_shadedrelief_jt_shadedrelief_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_stats_jt_stats_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_stats_jt_stats_1_1_1.xml new file mode 100644 index 0000000..5d45a0d --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_stats_jt_stats_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_translate_jt_translate_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_translate_jt_translate_1_1_1.xml new file mode 100644 index 0000000..94fdc48 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_translate_jt_translate_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_utilities_jt_utilities_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_utilities_jt_utilities_1_1_1.xml new file mode 100644 index 0000000..c16a164 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_utilities_jt_utilities_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_vectorbin_jt_vectorbin_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_vectorbin_jt_vectorbin_1_1_1.xml new file mode 100644 index 0000000..14b3205 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_vectorbin_jt_vectorbin_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_warp_jt_warp_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_warp_jt_warp_1_1_1.xml new file mode 100644 index 0000000..3cc41b9 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_warp_jt_warp_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__it_geosolutions_jaiext_zonal_jt_zonal_1_1_1.xml b/.idea/libraries/Maven__it_geosolutions_jaiext_zonal_jt_zonal_1_1_1.xml new file mode 100644 index 0000000..694e472 --- /dev/null +++ b/.idea/libraries/Maven__it_geosolutions_jaiext_zonal_jt_zonal_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml b/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml new file mode 100644 index 0000000..e74f3ab --- /dev/null +++ b/.idea/libraries/Maven__javax_annotation_javax_annotation_api_1_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_measure_unit_api_1_0.xml b/.idea/libraries/Maven__javax_measure_unit_api_1_0.xml new file mode 100644 index 0000000..096a37c --- /dev/null +++ b/.idea/libraries/Maven__javax_measure_unit_api_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_media_jai_codec_1_1_3.xml b/.idea/libraries/Maven__javax_media_jai_codec_1_1_3.xml new file mode 100644 index 0000000..4341c63 --- /dev/null +++ b/.idea/libraries/Maven__javax_media_jai_codec_1_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_media_jai_core_1_1_3.xml b/.idea/libraries/Maven__javax_media_jai_core_1_1_3.xml new file mode 100644 index 0000000..d8609e8 --- /dev/null +++ b/.idea/libraries/Maven__javax_media_jai_core_1_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_media_jai_imageio_1_1.xml b/.idea/libraries/Maven__javax_media_jai_imageio_1_1.xml new file mode 100644 index 0000000..931d9cb --- /dev/null +++ b/.idea/libraries/Maven__javax_media_jai_imageio_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml b/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml new file mode 100644 index 0000000..6978c0b --- /dev/null +++ b/.idea/libraries/Maven__javax_validation_validation_api_2_0_1_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__jgridshift_jgridshift_1_0.xml b/.idea/libraries/Maven__jgridshift_jgridshift_1_0.xml new file mode 100644 index 0000000..b7ad97c --- /dev/null +++ b/.idea/libraries/Maven__jgridshift_jgridshift_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 0000000..d411041 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_25.xml b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_25.xml new file mode 100644 index 0000000..4440a5f --- /dev/null +++ b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_12.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_12.xml new file mode 100644 index 0000000..ec857e4 --- /dev/null +++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_9_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_12.xml b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_12.xml new file mode 100644 index 0000000..767dbf7 --- /dev/null +++ b/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_9_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml b/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml new file mode 100644 index 0000000..b3d3858 --- /dev/null +++ b/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml b/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml new file mode 100644 index 0000000..1083023 --- /dev/null +++ b/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__net_sf_geographiclib_GeographicLib_Java_1_49.xml b/.idea/libraries/Maven__net_sf_geographiclib_GeographicLib_Java_1_49.xml new file mode 100644 index 0000000..34bd9de --- /dev/null +++ b/.idea/libraries/Maven__net_sf_geographiclib_GeographicLib_Java_1_49.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_8_1.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_8_1.xml new file mode 100644 index 0000000..33b78e9 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_8_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml new file mode 100644 index 0000000..fe93f54 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml new file mode 100644 index 0000000..889bf4f --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_11_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_17.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_17.xml new file mode 100644 index 0000000..d311b9a --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_17.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_17.xml new file mode 100644 index 0000000..735fed3 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_17.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_17.xml new file mode 100644 index 0000000..9b8e69b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_17.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml b/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml new file mode 100644 index 0000000..4d16d46 --- /dev/null +++ b/.idea/libraries/Maven__org_assertj_assertj_core_3_11_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_checkerframework_checker_qual_2_0_0.xml b/.idea/libraries/Maven__org_checkerframework_checker_qual_2_0_0.xml new file mode 100644 index 0000000..2cbbe64 --- /dev/null +++ b/.idea/libraries/Maven__org_checkerframework_checker_qual_2_0_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_codehaus_mojo_animal_sniffer_annotations_1_14.xml b/.idea/libraries/Maven__org_codehaus_mojo_animal_sniffer_annotations_1_14.xml new file mode 100644 index 0000000..1af11e4 --- /dev/null +++ b/.idea/libraries/Maven__org_codehaus_mojo_animal_sniffer_annotations_1_14.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ejml_ejml_core_0_34.xml b/.idea/libraries/Maven__org_ejml_ejml_core_0_34.xml new file mode 100644 index 0000000..2ca0399 --- /dev/null +++ b/.idea/libraries/Maven__org_ejml_ejml_core_0_34.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ejml_ejml_ddense_0_34.xml b/.idea/libraries/Maven__org_ejml_ejml_ddense_0_34.xml new file mode 100644 index 0000000..737819a --- /dev/null +++ b/.idea/libraries/Maven__org_ejml_ejml_ddense_0_34.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_api_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_api_20_0.xml new file mode 100644 index 0000000..326e48e --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_api_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_coverage_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_coverage_20_0.xml new file mode 100644 index 0000000..5f34337 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_coverage_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_cql_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_cql_20_0.xml new file mode 100644 index 0000000..0a5d794 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_cql_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_data_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_data_20_0.xml new file mode 100644 index 0000000..68f9d95 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_data_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_geojson_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_geojson_20_0.xml new file mode 100644 index 0000000..60358e2 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_geojson_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_jdbc_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_jdbc_20_0.xml new file mode 100644 index 0000000..412a461 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_jdbc_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_main_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_main_20_0.xml new file mode 100644 index 0000000..313cf91 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_main_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_metadata_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_metadata_20_0.xml new file mode 100644 index 0000000..d174b7f --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_metadata_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_opengis_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_opengis_20_0.xml new file mode 100644 index 0000000..e270809 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_opengis_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_referencing_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_referencing_20_0.xml new file mode 100644 index 0000000..42619a1 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_referencing_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_render_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_render_20_0.xml new file mode 100644 index 0000000..d105829 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_render_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_shapefile_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_shapefile_20_0.xml new file mode 100644 index 0000000..9d25ab6 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_shapefile_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_gt_swing_20_0.xml b/.idea/libraries/Maven__org_geotools_gt_swing_20_0.xml new file mode 100644 index 0000000..3992fee --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_gt_swing_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_geotools_jdbc_gt_jdbc_mysql_20_0.xml b/.idea/libraries/Maven__org_geotools_jdbc_gt_jdbc_mysql_20_0.xml new file mode 100644 index 0000000..35ba129 --- /dev/null +++ b/.idea/libraries/Maven__org_geotools_jdbc_gt_jdbc_mysql_20_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml new file mode 100644 index 0000000..78dbe45 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_16_Final.xml b/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_16_Final.xml new file mode 100644 index 0000000..1ca9936 --- /dev/null +++ b/.idea/libraries/Maven__org_hibernate_validator_hibernate_validator_6_0_16_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jaitools_jt_utils_1_5_0.xml b/.idea/libraries/Maven__org_jaitools_jt_utils_1_5_0.xml new file mode 100644 index 0000000..4dd41bc --- /dev/null +++ b/.idea/libraries/Maven__org_jaitools_jt_utils_1_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jaitools_jt_zonalstats_1_5_0.xml b/.idea/libraries/Maven__org_jaitools_jt_zonalstats_1_5_0.xml new file mode 100644 index 0000000..d99fc29 --- /dev/null +++ b/.idea/libraries/Maven__org_jaitools_jt_zonalstats_1_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml new file mode 100644 index 0000000..5f7dd01 --- /dev/null +++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_jdom_jdom2_2_0_6.xml b/.idea/libraries/Maven__org_jdom_jdom2_2_0_6.xml new file mode 100644 index 0000000..020a02f --- /dev/null +++ b/.idea/libraries/Maven__org_jdom_jdom2_2_0_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_locationtech_jts_jts_core_1_16_0.xml b/.idea/libraries/Maven__org_locationtech_jts_jts_core_1_16_0.xml new file mode 100644 index 0000000..5654d1f --- /dev/null +++ b/.idea/libraries/Maven__org_locationtech_jts_jts_core_1_16_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml b/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml new file mode 100644 index 0000000..159204f --- /dev/null +++ b/.idea/libraries/Maven__org_mockito_mockito_core_2_23_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml new file mode 100644 index 0000000..af41e3b --- /dev/null +++ b/.idea/libraries/Maven__org_objenesis_objenesis_2_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml new file mode 100644 index 0000000..0bf8cf2 --- /dev/null +++ b/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml new file mode 100644 index 0000000..c4c54d6 --- /dev/null +++ b/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml new file mode 100644 index 0000000..087b2a4 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_26.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml new file mode 100644 index 0000000..6545f77 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_26.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_4_RELEASE.xml new file mode 100644 index 0000000..cf900a4 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_4_RELEASE.xml new file mode 100644 index 0000000..1f7cd0d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_4_RELEASE.xml new file mode 100644 index 0000000..093c9f8 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_4_RELEASE.xml new file mode 100644 index 0000000..f60fc74 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_4_RELEASE.xml new file mode 100644 index 0000000..b844df9 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_4_RELEASE.xml new file mode 100644 index 0000000..69a8086 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_4_RELEASE.xml new file mode 100644 index 0000000..23a762f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_4_RELEASE.xml new file mode 100644 index 0000000..73a7558 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_4_RELEASE.xml new file mode 100644 index 0000000..d6a7d75 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_4_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_4_RELEASE.xml new file mode 100644 index 0000000..ee6fc74 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_1_4_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aop_5_1_6_RELEASE.xml new file mode 100644 index 0000000..4c53933 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aop_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_beans_5_1_6_RELEASE.xml new file mode 100644 index 0000000..9affe15 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_beans_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_5_1_6_RELEASE.xml new file mode 100644 index 0000000..78eb291 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_core_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_core_5_1_6_RELEASE.xml new file mode 100644 index 0000000..143f040 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_core_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_expression_5_1_6_RELEASE.xml new file mode 100644 index 0000000..279c319 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_expression_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_6_RELEASE.xml new file mode 100644 index 0000000..b3e41fd --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jcl_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_test_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_test_5_1_6_RELEASE.xml new file mode 100644 index 0000000..b189322 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_test_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_web_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_web_5_1_6_RELEASE.xml new file mode 100644 index 0000000..33dcd41 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_web_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_6_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_6_RELEASE.xml new file mode 100644 index 0000000..ae260fa --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_6_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml b/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml new file mode 100644 index 0000000..9f44657 --- /dev/null +++ b/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_6_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml new file mode 100644 index 0000000..7e63769 --- /dev/null +++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_23.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__si_uom_si_quantity_0_7_1.xml b/.idea/libraries/Maven__si_uom_si_quantity_0_7_1.xml new file mode 100644 index 0000000..3fb0117 --- /dev/null +++ b/.idea/libraries/Maven__si_uom_si_quantity_0_7_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__si_uom_si_units_java8_0_7_1.xml b/.idea/libraries/Maven__si_uom_si_units_java8_0_7_1.xml new file mode 100644 index 0000000..19afb9b --- /dev/null +++ b/.idea/libraries/Maven__si_uom_si_units_java8_0_7_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__systems_uom_systems_common_java8_0_7_2.xml b/.idea/libraries/Maven__systems_uom_systems_common_java8_0_7_2.xml new file mode 100644 index 0000000..1c5c69b --- /dev/null +++ b/.idea/libraries/Maven__systems_uom_systems_common_java8_0_7_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__tec_uom_lib_uom_lib_common_1_0_2.xml b/.idea/libraries/Maven__tec_uom_lib_uom_lib_common_1_0_2.xml new file mode 100644 index 0000000..78a93e7 --- /dev/null +++ b/.idea/libraries/Maven__tec_uom_lib_uom_lib_common_1_0_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__tec_uom_uom_se_1_0_8.xml b/.idea/libraries/Maven__tec_uom_uom_se_1_0_8.xml new file mode 100644 index 0000000..70fe3d0 --- /dev/null +++ b/.idea/libraries/Maven__tec_uom_uom_se_1_0_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..75172d1 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..a44d8ea --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/qaplug_profiles.xml b/.idea/qaplug_profiles.xml new file mode 100644 index 0000000..3dfd21f --- /dev/null +++ b/.idea/qaplug_profiles.xml @@ -0,0 +1,465 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/gis_geotools.iml b/gis_geotools.iml new file mode 100644 index 0000000..6d9eb79 --- /dev/null +++ b/gis_geotools.iml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..4a7ca39 --- /dev/null +++ b/pom.xml @@ -0,0 +1,188 @@ + + + + 4.0.0 + com.appleyk + gis_geotools + 0.1.1-SNAPSHOT + war + + gis_geotools + spring-boot集成geotools工具包,实现将几何对象写进Shapefile【文件】并读取和显示 + + + org.springframework.boot + spring-boot-starter-parent + 2.1.4.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + 20.0 + 42.1.4 + 2.11.2 + 1.2.74 + + + + + osgeo + OSGeo Release Repository + https://repo.osgeo.org/repository/release/ + + false + + + true + + + + osgeo-snapshot + OSGeo Snapshot Repository + https://repo.osgeo.org/repository/snapshot/ + + true + + + false + + + + + + + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + junit + junit + + + + + org.geotools + gt-shapefile + ${geotools.version} + + + + org.geotools + gt-swing + ${geotools.version} + + + + + org.geotools + gt-geojson + ${geotools.version} + + + + org.geotools.jdbc + gt-jdbc-mysql + ${geotools.version} + + + + mysql + mysql-connector-java + 5.1.25 + + + + + com.alibaba + fastjson + ${fastjson.version} + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + + + + + + + src/main/resources + + + src/main/resources + + **/*.properties + **/*.xml + + false + + + src/main/java + + **/*.properties + **/*.xml + + false + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*Documentation.java + + + + + + diff --git a/src/main/java/com/appleyk/IO/StringTokenReader.java b/src/main/java/com/appleyk/IO/StringTokenReader.java new file mode 100644 index 0000000..fe465a6 --- /dev/null +++ b/src/main/java/com/appleyk/IO/StringTokenReader.java @@ -0,0 +1,672 @@ +package com.appleyk.IO; + + +import org.locationtech.jts.geom.*; +import org.locationtech.jts.io.ParseException; +import org.locationtech.jts.util.Assert; + +import java.io.IOException; +import java.io.Reader; +import java.io.StreamTokenizer; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.List; + +/** + *

StringToken 特殊、自定义字符串解析Reader

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 上午 2018年10月25日09:22:41 + */ +public class StringTokenReader { + + private static final String EMPTY = "EMPTY"; + private static final String COMMA = ","; + private static final String L_PAREN = "("; + private static final String R_PAREN = ")"; + private static final String NAN_SYMBOL = "NaN"; + private static final String Z = "Z"; + private static final String M = "M"; + private static final String ZM = "ZM"; + private static final String POINT = "POINT"; + private static final String LINESTRING = "LINESTRING"; + private static final String LINEARRING = "LINEARRING"; + private static final String POLYGON = "POLYGON"; + private static final String MULTI_POINT = "MULTIPOINT"; + private static final String MULTI_LINESTRING = "MULTILINESTRING"; + private static final String MULTI_POLYGON = "MULTIPOLYGON"; + + private GeometryFactory geometryFactory; + private PrecisionModel precisionModel; + private StreamTokenizer tokenizer; + + /** + * Not yet used (useful if we want to read Z, M and ZM WKT) + */ + private boolean z; + private boolean m; + + /** + * Creates a reader that creates objects using the default + * {@link GeometryFactory}. + */ + public StringTokenReader() { + this(new GeometryFactory()); + } + + /** + * Creates a reader that creates objects using the given + * {@link GeometryFactory}. + * + * @param geometryFactory the factory used to create Geometrys. + */ + public StringTokenReader(GeometryFactory geometryFactory) { + this.geometryFactory = geometryFactory; + precisionModel = geometryFactory.getPrecisionModel(); + } + + /** + * Reads a Well-Known Text representation of a {@link Geometry} from a + * {@link String}. + * + * @param wellKnownText one or more <Geometry Tagged Text> strings (see the + * OpenGIS Simple Features Specification) separated by whitespace + * @return a Geometry specified by wellKnownText + * @throws ParseException if a parsing problem occurs + */ + public Geometry read(String wellKnownText) throws ParseException { + StringReader reader = new StringReader(wellKnownText); + try { + return read(reader); + } finally { + reader.close(); + } + } + + /** + * Reads a Well-Known Text representation of a {@link Geometry} from a + * {@link Reader}. + * + * @param reader a Reader which will return a <Geometry Tagged Text> + * string (see the OpenGIS Simple Features Specification) + * @return a Geometry read from reader + * @throws ParseException if a parsing problem occurs + */ + public Geometry read(Reader reader) throws ParseException { + tokenizer = new StreamTokenizer(reader); + // set tokenizer to NOT parse numbers + tokenizer.resetSyntax(); + tokenizer.wordChars('a', 'z'); + tokenizer.wordChars('A', 'Z'); + tokenizer.wordChars(128 + 32, 255); + tokenizer.wordChars('0', '9'); + tokenizer.wordChars('-', '-'); + tokenizer.wordChars('+', '+'); + tokenizer.wordChars('.', '.'); + tokenizer.whitespaceChars(0, ' '); + tokenizer.commentChar('#'); + z = false; + m = false; + try { + return readGeometryTaggedText(); + } catch (IOException e) { + throw new ParseException(e.toString()); + } + } + + /** + * Returns the next array of Coordinates in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next element returned by the stream should be L_PAREN (the beginning of + * "(x1 y1, x2 y2, ..., xn yn)") or EMPTY. + * + * @return the next array of Coordinates in the stream, or an + * empty array if EMPTY is the next element returned by the stream. + * @throws IOException if an I/O error occurs + * @throws ParseException if an unexpected token was encountered + */ + private Coordinate[] getCoordinates() throws IOException, ParseException { + String nextToken = getNextEmptyOrOpener(); + if (EMPTY.equals(nextToken)) { + return new Coordinate[]{}; + } + List coordinates = new ArrayList<>(); + coordinates.add(getPreciseCoordinate()); + nextToken = getNextCloserOrComma(); + while (COMMA.equals(nextToken)) { + coordinates.add(getPreciseCoordinate()); + nextToken = getNextCloserOrComma(); + } + Coordinate[] array = new Coordinate[coordinates.size()]; + return coordinates.toArray(array); + } + + private Coordinate[] getCoordinatesNoLeftParen() throws IOException, ParseException { + List coordinates = new ArrayList<>(); + coordinates.add(getPreciseCoordinate()); + String nextToken = getNextCloserOrComma(); + while (COMMA.equals(nextToken)) { + coordinates.add(getPreciseCoordinate()); + nextToken = getNextCloserOrComma(); + } + Coordinate[] array = new Coordinate[coordinates.size()]; + return coordinates.toArray(array); + } + + private Coordinate getPreciseCoordinate() throws IOException, ParseException { + Coordinate coordinate = new Coordinate(); + coordinate.setX(getNextNumber()); + coordinate.setY(getNextNumber()); + if (isNumberNext()) { + coordinate.setZ(getNextNumber()); + } + if (isNumberNext()) { + // ignore M value + getNextNumber(); + } + precisionModel.makePrecise(coordinate); + return coordinate; + } + + private boolean isNumberNext() throws IOException { + int type = tokenizer.nextToken(); + tokenizer.pushBack(); + return type == StreamTokenizer.TT_WORD; + } + + /** + * Parses the next number in the stream. Numbers with exponents are handled. + * NaN values are handled correctly, and the case of the "NaN" + * symbol is not significant. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next token must be a number. + * + * @return the next number in the stream + * @throws ParseException if the next token is not a valid number + * @throws IOException if an I/O error occurs + */ + private double getNextNumber() throws IOException, ParseException { + int type = tokenizer.nextToken(); + switch (type) { + case StreamTokenizer.TT_WORD: { + if (tokenizer.sval.equalsIgnoreCase(NAN_SYMBOL)) { + return Double.NaN; + } else { + try { + return Double.parseDouble(tokenizer.sval); + } catch (NumberFormatException ex) { + parseErrorWithLine("Invalid number: " + tokenizer.sval); + } + } + break; + } + default:{ + + } + } + parseErrorExpected("number"); + return 0.0; + } + + /** + * Returns the next EMPTY or L_PAREN in the stream as uppercase text. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next token must be EMPTY or L_PAREN. + * + * @return the next EMPTY or L_PAREN in the stream as uppercase text. + * @throws ParseException if the next token is not EMPTY or L_PAREN + * @throws IOException if an I/O error occurs + */ + private String getNextEmptyOrOpener() throws IOException, ParseException { + String nextWord = getNextWord(); + if (Z.equalsIgnoreCase(nextWord)) { + z = true; + nextWord = getNextWord(); + } else if (M.equalsIgnoreCase(nextWord)) { + m = true; + nextWord = getNextWord(); + } else if (ZM.equalsIgnoreCase(nextWord)) { + z = true; + m = true; + nextWord = getNextWord(); + } + if (EMPTY.equals(nextWord) || L_PAREN.equals(nextWord)) { + return nextWord; + } + parseErrorExpected(EMPTY + " or " + L_PAREN); + return null; + } + + /** + * Returns the next R_PAREN or COMMA in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next token must be R_PAREN or COMMA. + * + * @return the next R_PAREN or COMMA in the stream + * @throws ParseException if the next token is not R_PAREN or COMMA + * @throws IOException if an I/O error occurs + */ + private String getNextCloserOrComma() throws IOException, ParseException { + String nextWord = getNextWord(); + if (COMMA.equals(nextWord) || R_PAREN.equals(nextWord)) { + return nextWord; + } + parseErrorExpected(COMMA + " or " + R_PAREN); + return null; + } + + /** + * Returns the next R_PAREN in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next token must be R_PAREN. + * + * @return the next R_PAREN in the stream + * @throws ParseException if the next token is not R_PAREN + * @throws IOException if an I/O error occurs + */ + private String getNextCloser() throws IOException, ParseException { + String nextWord = getNextWord(); + if (R_PAREN.equals(nextWord)) { + return nextWord; + } + parseErrorExpected(R_PAREN); + return null; + } + + /** + * Returns the next word in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next token must be a word. + * + * @return the next word in the stream as uppercase text + * @throws ParseException if the next token is not a word + * @throws IOException if an I/O error occurs + */ + private String getNextWord() throws IOException, ParseException { + int type = tokenizer.nextToken(); + switch (type) { + case StreamTokenizer.TT_WORD: + + String word = tokenizer.sval; + if (word.equalsIgnoreCase(EMPTY)){ + return EMPTY; + } + + return word; + + case '(': + return L_PAREN; + case ')': + return R_PAREN; + case ',': + return COMMA; + default:{ + + } + } + parseErrorExpected("word"); + return null; + } + + /** + * Returns the next word in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next token must be a word. + * + * @return the next word in the stream as uppercase text + * @throws ParseException if the next token is not a word + * @throws IOException if an I/O error occurs + */ + private String lookaheadWord() throws IOException, ParseException { + String nextWord = getNextWord(); + tokenizer.pushBack(); + return nextWord; + } + + /** + * Throws a formatted ParseException reporting that the current token was + * unexpected. + * + * @param expected a description of what was expected + * @throws ParseException AssertionFailedException if an invalid token is encountered + */ + private void parseErrorExpected(String expected) throws ParseException { + // throws Asserts for tokens that should never be seen + if (tokenizer.ttype == StreamTokenizer.TT_NUMBER){ + Assert.shouldNeverReachHere("Unexpected NUMBER token"); + } + if (tokenizer.ttype == StreamTokenizer.TT_EOL){ + Assert.shouldNeverReachHere("Unexpected EOL token"); + } + + String tokenStr = tokenString(); + parseErrorWithLine("Expected " + expected + " but found " + tokenStr); + } + + private void parseErrorWithLine(String msg) throws ParseException { + throw new ParseException(msg + " (line " + tokenizer.lineno() + ")"); + } + + /** + * Gets a description of the current token + * + * @return a description of the current token + */ + private String tokenString() { + switch (tokenizer.ttype) { + case StreamTokenizer.TT_NUMBER: + return ""; + case StreamTokenizer.TT_EOL: + return "End-of-Line"; + case StreamTokenizer.TT_EOF: + return "End-of-Stream"; + case StreamTokenizer.TT_WORD: + return "'" + tokenizer.sval + "'"; + default:{ + + } + } + return "'" + (char) tokenizer.ttype + "'"; + } + + /** + * Creates a Geometry using the next token in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <Geometry Tagged Text>. + * + * @return a Geometry specified by the next token in the stream + * @throws ParseException if the coordinates used to create a Polygon + * shell and holes do not form closed linestrings, or if an + * unexpected token was encountered + * @throws IOException if an I/O error occurs + */ + private Geometry readGeometryTaggedText() throws IOException, ParseException { + + String type; + try { + type = getNextWord(); + if(type == null){ + return null; + } + type= type.toUpperCase(); + + if (type.endsWith(Z)){ + z = true; + } + if (type.endsWith(M)){ + m = true; + } + } catch (IOException e) { + return null; + } + + if (type.startsWith(POINT)) { + return readPointText(); + } else if (type.startsWith(LINESTRING)) { + return readLineStringText(); + } else if (type.startsWith(LINEARRING)) { + return readLinearRingText(); + } else if (type.startsWith(POLYGON)) { + return readPolygonText(); + } else if (type.startsWith(MULTI_POINT)) { + return readMultiPointText(); + } else if (type.startsWith(MULTI_LINESTRING)) { + return readMultiLineStringText(); + } else if (type.startsWith(MULTI_POLYGON)) { + return readMultiPolygonText(); + } + parseErrorWithLine("Unknown geometry type: " + type); + return null; + } + + /** + * Creates a Point using the next token in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <Point Text>. + * + * @return a Point specified by the next token in the stream + * @throws IOException if an I/O error occurs + * @throws ParseException if an unexpected token was encountered + */ + private Point readPointText() throws IOException, ParseException { + String nextToken = getNextEmptyOrOpener(); + if (EMPTY.equals(nextToken)) { + return geometryFactory + .createPoint(geometryFactory.getCoordinateSequenceFactory().create(new Coordinate[]{})); + } + Point point = geometryFactory.createPoint(getPreciseCoordinate()); + getNextCloser(); + return point; + } + + /** + * Creates a LineString using the next token in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <LineString Text>. + * + * @return a LineString specified by the next token in the + * stream + * @throws IOException if an I/O error occurs + * @throws ParseException if an unexpected token was encountered + */ + private LineString readLineStringText() throws IOException, ParseException { + return geometryFactory.createLineString(getCoordinates()); + } + + /** + * Creates a LinearRing using the next token in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <LineString Text>. + * + * @return a LinearRing specified by the next token in the + * stream + * @throws IOException if an I/O error occurs + * @throws ParseException if the coordinates used to create the LinearRing + * do not form a closed linestring, or if an unexpected token + * was encountered + */ + private LinearRing readLinearRingText() throws IOException, ParseException { + return geometryFactory.createLinearRing(getCoordinates()); + } + + /* + * private MultiPoint OLDreadMultiPointText() throws IOException, + * ParseException { return + * geometryFactory.createMultiPoint(toPoints(getCoordinates())); } + */ + + private static final boolean ALLOW_OLD_JTS_MULTIPOINT_SYNTAX = true; + + /** + * Creates a MultiPoint using the next tokens in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <MultiPoint Text>. + * + * @return a MultiPoint specified by the next token in the + * stream + * @throws IOException if an I/O error occurs + * @throws ParseException if an unexpected token was encountered + */ + private MultiPoint readMultiPointText() throws IOException, ParseException { + String nextToken = getNextEmptyOrOpener(); + if (EMPTY.equals(nextToken)) { + return geometryFactory.createMultiPoint(new Point[0]); + } + + // check for old-style JTS syntax and parse it if present + // MD 2009-02-21 - this is only provided for backwards compatibility for + // a few versions + if (ALLOW_OLD_JTS_MULTIPOINT_SYNTAX) { + String nextWord = lookaheadWord(); + if (!nextWord.equals(L_PAREN)) { + return geometryFactory.createMultiPoint(toPoints(getCoordinatesNoLeftParen())); + } + } + + List points = new ArrayList<>(); + Point point = readPointText(); + points.add(point); + nextToken = getNextCloserOrComma(); + while (COMMA.equals(nextToken)) { + point = readPointText(); + points.add(point); + nextToken = getNextCloserOrComma(); + } + Point[] array = new Point[points.size()]; + return geometryFactory.createMultiPoint( points.toArray(array)); + } + + /** + * Creates an array of Points having the given + * Coordinate s. + * + * @param coordinates the Coordinates with which to create the + * Points + * @return Points created using this WKTReader s + * GeometryFactory + */ + private Point[] toPoints(Coordinate[] coordinates) { + List points = new ArrayList<>(); + for (Coordinate coordinate : coordinates) { + points.add(geometryFactory.createPoint(coordinate)); + } + return points.toArray(new Point[]{}); + } + + /** + * Creates a Polygon using the next token in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <Polygon Text>. + * + * @return a Polygon specified by the next token in the stream + * @throws ParseException if the coordinates used to create the Polygon + * shell and holes do not form closed linestrings, or if an + * unexpected token was encountered. + * @throws IOException if an I/O error occurs + */ + private Polygon readPolygonText() throws IOException, ParseException { + String nextToken = getNextEmptyOrOpener(); + if (EMPTY.equals(nextToken)) { + return geometryFactory.createPolygon(geometryFactory.createLinearRing(new Coordinate[]{}), + new LinearRing[]{}); + } + List holes = new ArrayList<>(); + LinearRing shell = readLinearRingText(); + nextToken = getNextCloserOrComma(); + while (COMMA.equals(nextToken)) { + LinearRing hole = readLinearRingText(); + holes.add(hole); + nextToken = getNextCloserOrComma(); + } + LinearRing[] array = new LinearRing[holes.size()]; + return geometryFactory.createPolygon(shell, holes.toArray(array)); + } + + /** + * Creates a MultiLineString using the next token in the + * stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <MultiLineString Text>. + * + * @return a MultiLineString specified by the next token in the + * stream + * @throws IOException if an I/O error occurs + * @throws ParseException if an unexpected token was encountered + */ + private MultiLineString readMultiLineStringText() throws IOException, ParseException { + String nextToken = getNextEmptyOrOpener(); + if (EMPTY.equals(nextToken)) { + return geometryFactory.createMultiLineString(new LineString[]{}); + } + List lineStrings = new ArrayList<>(); + LineString lineString = readLineStringText(); + lineStrings.add(lineString); + nextToken = getNextCloserOrComma(); + while (COMMA.equals(nextToken)) { + lineString = readLineStringText(); + lineStrings.add(lineString); + nextToken = getNextCloserOrComma(); + } + LineString[] array = new LineString[lineStrings.size()]; + return geometryFactory.createMultiLineString(lineStrings.toArray(array)); + } + + /** + * Creates a MultiPolygon using the next token in the stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <MultiPolygon Text>. + * + * @return a MultiPolygon specified by the next token in the + * stream, or if if the coordinates used to create the + * Polygon shells and holes do not form closed + * linestrings. + * @throws IOException if an I/O error occurs + * @throws ParseException if an unexpected token was encountered + */ + private MultiPolygon readMultiPolygonText() throws IOException, ParseException { + String nextToken = getNextEmptyOrOpener(); + if (EMPTY.equals(nextToken)) { + return new MultiPolygon(null, geometryFactory); + } + List polygons = new ArrayList<>(); + Polygon polygon = readPolygonText(); + polygons.add(polygon); + nextToken = getNextCloserOrComma(); + while (COMMA.equals(nextToken)) { + polygon = readPolygonText(); + polygons.add(polygon); + nextToken = getNextCloserOrComma(); + } + Polygon[] array = new Polygon[polygons.size()]; + return geometryFactory.createMultiPolygon(polygons.toArray(array)); + } + + /** + * Creates a GeometryCollection using the next token in the + * stream. + *

+ * tokenizer tokenizer over a stream of text in Well-known Text format. The + * next tokens must form a <GeometryCollection Text>. + * + * @return a GeometryCollection specified by the next token in + * the stream + * @throws ParseException if the coordinates used to create a Polygon + * shell and holes do not form closed linestrings, or if an + * unexpected token was encountered + * @throws IOException if an I/O error occurs + */ + private GeometryCollection readGeometryCollectionText() throws IOException, ParseException { + String nextToken = getNextEmptyOrOpener(); + if (EMPTY.equals(nextToken)) { + return geometryFactory.createGeometryCollection(new Geometry[]{}); + } + List geometries = new ArrayList<>(); + Geometry geometry = readGeometryTaggedText(); + geometries.add(geometry); + nextToken = getNextCloserOrComma(); + while (COMMA.equals(nextToken)) { + geometry = readGeometryTaggedText(); + geometries.add(geometry); + nextToken = getNextCloserOrComma(); + } + Geometry[] array = new Geometry[geometries.size()]; + return geometryFactory.createGeometryCollection(geometries.toArray(array)); + } + + +} diff --git a/src/main/java/com/appleyk/ShpApplication.java b/src/main/java/com/appleyk/ShpApplication.java new file mode 100644 index 0000000..e8aa454 --- /dev/null +++ b/src/main/java/com/appleyk/ShpApplication.java @@ -0,0 +1,56 @@ +package com.appleyk; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.context.annotation.Bean; + +/** + * 下面是一个典型的结构: + * + * com + * +- example + * +- myproject + * +- Application.java -- + * + * 注意这个位置,习惯性的放在项目的一开始,也就是根包的第一层 | + - domain | +- Customer.java | +- + * CustomerRepository.java | + - service | +- CustomerService.java | + - web +- + * CustomerController.java + * 文件将声明 main 方法, 还有基本的 @Configuration + * + *

SpringBoot启动类

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 上午 11:54 2018-10-12 + */ +@SpringBootApplication// same as @Configuration @EnableAutoConfiguration @ComponentScan +public class ShpApplication extends SpringBootServletInitializer { + + /** + * SpringApplication类提供了一种从main()方法启动Spring应用的便捷方式。 在很多情况下, 你只需委托给 + * SpringApplication.run这个静态方法: + * @param args 输入参数 + */ + public static void main(String[] args) { + SpringApplication.run(ShpApplication.class, args); + } + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(ShpApplication.class); + } + + /** + * Spring-Boot启动的时候,加载、创建、初始化数据 + * @return 初始化信息 + */ + @Bean + CommandLineRunner demo() { + return args -> { + System.out.println("<<<<<<<<< Hello,Spring Boot ! >>>>>>>>"); + }; + } + +} diff --git a/src/main/java/com/appleyk/controller/ShpController.java b/src/main/java/com/appleyk/controller/ShpController.java new file mode 100644 index 0000000..ba31732 --- /dev/null +++ b/src/main/java/com/appleyk/controller/ShpController.java @@ -0,0 +1,77 @@ +package com.appleyk.controller; + +import com.appleyk.pojos.ShpInfo; +import com.appleyk.result.ResponseResult; +import com.appleyk.service.ShpService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; + +/** + *

shp接口请求处理器

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 下午 2018-10-24 16:27:22 + */ +@CrossOrigin +@RequestMapping("/shper") +@RestController +public class ShpController { + + @Autowired + private ShpService shpService; + + @GetMapping("/hello") + public String sayHello(){ + return "Hello Appleyk's Controller !"; + } + + + /** + * 写一个shp文件 + * @param shpInfo + * @return + * @throws Exception + */ + @PostMapping("/write") + public ResponseResult write(@RequestBody ShpInfo shpInfo) throws Exception{ + return shpService.writeShp(shpInfo); + } + + /** + * 查询一个shp文件 + * @param shpFilePath 文件绝对路径 + * @param limit 指定显示多少条shp特征【features】 + * @return + * @throws Exception + */ + @GetMapping("/query") + public ResponseResult query(@RequestParam(value = "path",required = true) String shpFilePath, + @RequestParam(value = "limit",required = false,defaultValue = "10") Integer limit ) throws Exception{ + return shpService.getShpDatas(shpFilePath,limit); + } + + /** + * 将shp文件转换成png图片,图片或写入文件或通过response输出到界面【比如,客户端浏览器】 + * @param path shp文件路径 + * @param imagePath 如果imagePath不等于空,则shp文件转成图片文件存储进行存 + * @param color 渲染颜色 + */ + @GetMapping("/show") + public void show(@RequestParam(value = "path",required = true) String path, + @RequestParam(value = "imagePath",required = false) String imagePath, + @RequestParam(value = "color",required = false) String color, + HttpServletResponse response) throws Exception{ + + // 设置响应消息的类型 + response.setContentType("image/png"); + + // 设置页面不缓存 + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Pragma", "no-cache"); + response.setDateHeader("Expires", 0); + shpService.showShp(path, imagePath,color ,response); + } + +} diff --git a/src/main/java/com/appleyk/exception/GlobalExceptionHandler.java b/src/main/java/com/appleyk/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..e573e8d --- /dev/null +++ b/src/main/java/com/appleyk/exception/GlobalExceptionHandler.java @@ -0,0 +1,30 @@ +package com.appleyk.exception; + + +import com.appleyk.result.ResponseResult; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +/** + *

全局异常捕获处理类

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 上午 2018年10月25日09:57:57 + */ +@CrossOrigin +@RestControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler + public ResponseResult processException(Exception ex, HttpServletRequest request, HttpServletResponse response) + throws Exception { + + return new ResponseResult(400, ex); + } + +} diff --git a/src/main/java/com/appleyk/geotools/GeoUtils.java b/src/main/java/com/appleyk/geotools/GeoUtils.java new file mode 100644 index 0000000..c682db8 --- /dev/null +++ b/src/main/java/com/appleyk/geotools/GeoUtils.java @@ -0,0 +1,125 @@ +package com.appleyk.geotools; + +import org.geotools.data.DataStore; +import org.geotools.data.FeatureWriter; +import org.geotools.data.Transaction; +import org.geotools.data.mysql.MySQLDataStoreFactory; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.jdbc.JDBCDataStore; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; + +/** + * @description: + * @author: zzl + * @date: Created in 2021/5/16 13:30 + * @version: 1 + * @modified By: + */ +public class GeoUtils { + + //测试代码 + public static void main(String[] args) throws IOException { + + JDBCDataStore connnection2mysql = GeoUtils.connnection2mysql("localhost", "gis?serverTimezone=GMT%2B8", 3318, "gly", "glyadmin"); + SimpleFeatureSource featureSource = readSHP("D:\\NsgkSoft\\files\\uploadPath\\gis\\china_railways.shp"); + JDBCDataStore ds = createTable(connnection2mysql, featureSource); + writeShp2Mysql(ds, featureSource); + + } + + public static SimpleFeatureSource readSHP(String shpfile) { + SimpleFeatureSource featureSource = null; + try { + File file = new File(shpfile); + ShapefileDataStore shpDataStore = null; + + shpDataStore = new ShapefileDataStore(file.toURL()); + //设置编码 + Charset charset = Charset.forName("utf-8"); + shpDataStore.setCharset(charset); + String tableName = shpDataStore.getTypeNames()[0]; + featureSource = shpDataStore.getFeatureSource(tableName); + + } catch (Exception e) { + e.printStackTrace(); + } + return featureSource; + } + + public static JDBCDataStore connnection2mysql(String host, String dataBase, int port, String userName, String pwd) { + JDBCDataStore ds = null; + DataStore dataStore = null; + //连接数据库参数 + java.util.Map params = new java.util.HashMap(); + params.put(MySQLDataStoreFactory.DBTYPE.key, "mysql"); + params.put(MySQLDataStoreFactory.HOST.key, host); + params.put(MySQLDataStoreFactory.PORT.key, port); + params.put(MySQLDataStoreFactory.DATABASE.key, dataBase); + params.put(MySQLDataStoreFactory.USER.key, userName); + params.put(MySQLDataStoreFactory.PASSWD.key, pwd); + + try { + MySQLDataStoreFactory factory1 = new MySQLDataStoreFactory(); + + dataStore = factory1.createDataStore(params); + if (dataStore != null) { + ds = (JDBCDataStore) dataStore; + System.out.println(dataBase + "连接成功"); + } else { + System.out.println(dataBase + "连接失败"); + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return ds; + } + + public static JDBCDataStore createTable(JDBCDataStore ds, SimpleFeatureSource featureSource) { + SimpleFeatureType schema = featureSource.getSchema(); + try { + //创建数据表 + ds.createSchema(schema); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return ds; + } + + public static void writeShp2Mysql(JDBCDataStore ds, SimpleFeatureSource featureSource) { + SimpleFeatureType schema = featureSource.getSchema(); + System.out.println("表结构: " + schema); + //开始写入数据 + try { + FeatureWriter writer = ds.getFeatureWriter(schema.getTypeName().toLowerCase(), Transaction.AUTO_COMMIT); + SimpleFeatureCollection featureCollection = featureSource.getFeatures(); + SimpleFeatureIterator features = featureCollection.features(); + while (features.hasNext()) { + writer.hasNext(); + SimpleFeature next = writer.next(); + SimpleFeature feature = features.next(); + for (int i = 0; i < feature.getAttributeCount(); i++) { + next.setAttribute(i, feature.getAttribute(i)); + } + writer.write(); + } + writer.close(); + ds.dispose(); + System.out.println("导入成功"); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } // SimpleFeatureIterator itertor = featureSource.getFeatures() // .features(); //create the builder SimpleFeatureBuilder builder = new SimpleFeatureBuilder(schema); + + + } +} diff --git a/src/main/java/com/appleyk/geotools/GeometryCreator.java b/src/main/java/com/appleyk/geotools/GeometryCreator.java new file mode 100644 index 0000000..e44f90b --- /dev/null +++ b/src/main/java/com/appleyk/geotools/GeometryCreator.java @@ -0,0 +1,237 @@ +package com.appleyk.geotools; + +import org.geotools.geojson.geom.GeometryJSON; +import org.locationtech.jts.geom.*; +import org.locationtech.jts.io.ParseException; +import org.locationtech.jts.io.WKTReader; + +import java.io.StringReader; +import java.io.StringWriter; +import java.util.List; + +/** + *

自定义几何对象构造器

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 上午 11:54 2018-10-12 + */ +public class GeometryCreator { + + + private static GeometryCreator geometryCreator = null; + private static GeometryFactory geometryFactory = new GeometryFactory(); + + /** + * 设置保留6位小数,否则GeometryJSON默认保留4位小数 + */ + private static GeometryJSON geometryJson = new GeometryJSON(6); + + + private GeometryCreator() { + } + + /** + * 返回本类的唯一实例 + * @return + */ + public static GeometryCreator getInstance() { + if (geometryCreator == null) { + return new GeometryCreator(); + } + return geometryCreator; + } + + + /** + * 1.1根据X,Y坐标构建一个几何对象: 点 【Point】 + * @param x + * @param y + * @return + */ + public Point createPoint(double x,double y){ + Coordinate coord = new Coordinate(x, y); + return geometryFactory.createPoint(coord); + } + + /** + * 1.2根据几何对象的WKT描述【String】创建几何对象: 点 【Point】 + * @return + * @throws ParseException + */ + public Point createPointByWKT(String PointWKT) throws ParseException { + WKTReader reader = new WKTReader(geometryFactory); + return (Point) reader.read(PointWKT); + } + + /** + * 1.3根据几何对象的WKT描述【String】创建几何对象:多点 【MultiPoint】 + * @return + * @throws ParseException + */ + public MultiPoint createMulPointByWKT(String MPointWKT)throws ParseException{ + WKTReader reader = new WKTReader( geometryFactory ); + return (MultiPoint) reader.read(MPointWKT); + } + + /** + * 2.1根据两点 创建几何对象:线 【LineString】 + * @param ax 第一个点的x坐标 + * @param ay 第一个点的y坐标 + * @param bx 第二个点的x坐标 + * @param by 第二个点的y坐标 + * @return + */ + public LineString createLine(double ax,double ay,double bx,double by){ + Coordinate[] coords = new Coordinate[] {new Coordinate(ax, ay), new Coordinate(bx, by)}; + return geometryFactory.createLineString(coords); + } + + /** + * 2.2根据线的WKT描述创建几何对象:线 【LineString】 + * @param LineStringWKT + * @return + * @throws ParseException + */ + public LineString createLineByWKT(String LineStringWKT) throws ParseException{ + WKTReader reader = new WKTReader( geometryFactory ); + return (LineString) reader.read(LineStringWKT); + } + + /** + * 2.3根据点组合的线数组,创建几何对象:多线 【MultiLineString】 + * @param list + * @return + */ + public MultiLineString createMLine(List list){ + + if(list == null){ + return null; + } + + LineString[] lineStrings = new LineString[list.size()]; + int i = 0; + for (Coordinate[] coordinates : list) { + lineStrings[i] = geometryFactory.createLineString(coordinates); + } + + return geometryFactory.createMultiLineString(lineStrings); + } + + + /** + * 2.4根据几何对象的WKT描述【String】创建几何对象 : 多线【MultiLineString】 + * @param MLineStringWKT + * @return + * @throws ParseException + */ + public MultiLineString createMLineByWKT(String MLineStringWKT)throws ParseException{ + WKTReader reader = new WKTReader( geometryFactory ); + return (MultiLineString) reader.read(MLineStringWKT); + } + + + /** + * 3.1 根据几何对象的WKT描述【String】创建几何对象:多边形 【Polygon】 + * @param PolygonWKT + * @return + * @throws ParseException + */ + public Polygon createPolygonByWKT(String PolygonWKT) throws ParseException{ + WKTReader reader = new WKTReader( geometryFactory ); + return (Polygon) reader.read(PolygonWKT); + } + + /** + * 3.2 根据几何对象的WKT描述【String】创建几何对象: 多多边形 【MultiPolygon】 + * @param MPolygonWKT + * @return + * @throws ParseException + */ + public MultiPolygon createMulPolygonByWKT(String MPolygonWKT) throws ParseException{ + WKTReader reader = new WKTReader( geometryFactory ); + return (MultiPolygon) reader.read(MPolygonWKT); + } + + /** + * 根据多边形数组 进行多多边形的创建 + * @param polygons + * @return + * @throws ParseException + */ + public MultiPolygon createMulPolygonByPolygon(Polygon[] polygons) throws ParseException{ + return geometryFactory.createMultiPolygon(polygons); + } + + /** + * 4.1 根据几何对象数组,创建几何对象集合:【GeometryCollection】 + * @return + * @throws ParseException + */ + public GeometryCollection createGeoCollect(Geometry[] geoArray) throws ParseException{ + return geometryFactory.createGeometryCollection(geoArray); + } + + /** + * 5.1 根据圆点以及半径创建几何对象:特殊的多边形--圆 【Polygon】 + * @param x 圆点x坐标 + * @param y 圆点y坐标 + * @param radius 半径 + * @return + */ + public Polygon createCircle(double x, double y, final double radius){ + + //圆上面的点个数 + final int sides = 32; + Coordinate[] coords = new Coordinate[sides+1]; + for( int i = 0; i < sides; i++){ + double angle = ((double) i / (double) sides) * Math.PI * 2.0; + double dx = Math.cos( angle ) * radius; + double dy = Math.sin( angle ) * radius; + coords[i] = new Coordinate( (double) x + dx, (double) y + dy ); + } + coords[sides] = coords[0]; + //线性环 + LinearRing ring = geometryFactory.createLinearRing(coords); + return geometryFactory.createPolygon(ring, null); + } + + + /** + * 6.1 根据WKT创建环 + * @param ringWKT + * @return + * @throws ParseException + */ + public LinearRing createLinearRingByWKT(String ringWKT) throws ParseException{ + WKTReader reader = new WKTReader( geometryFactory ); + return (LinearRing) reader.read(ringWKT); + } + + /** + * 几何对象转GeoJson对象 + * @param geometry + * @return + * @throws Exception + */ + public static String geometryToGeoJson(Geometry geometry) throws Exception { + if (geometry == null) { + return null; + } + StringWriter writer = new StringWriter(); + geometryJson.write(geometry, writer); + String geojson = writer.toString(); + writer.close(); + return geojson; + } + + /** + * GeoJson转几何对象 + * @param geojson + * @return + * @throws Exception + */ + public static Geometry geoJsonToGeometry(String geojson) throws Exception { + return geometryJson.read(new StringReader(geojson)); + } + +} diff --git a/src/main/java/com/appleyk/geotools/ShapeTools.java b/src/main/java/com/appleyk/geotools/ShapeTools.java new file mode 100644 index 0000000..3c3e384 --- /dev/null +++ b/src/main/java/com/appleyk/geotools/ShapeTools.java @@ -0,0 +1,82 @@ +package com.appleyk.geotools; + +import org.geotools.data.FileDataStore; +import org.geotools.data.FileDataStoreFinder; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.data.simple.SimpleFeatureSource; +import org.opengis.feature.GeometryAttribute; +import org.opengis.feature.Property; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.type.GeometryType; +import org.opengis.feature.type.Name; +import org.opengis.referencing.crs.CoordinateReferenceSystem; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +/** + * @description: + * @author: zzl + * @date: Created in 2021/5/19 18:53 + * @version: 1 + * @modified By: + */ +public class ShapeTools { + + public static void main(String[] args) throws IOException { + String pathName = "D:\\NsgkSoft\\files\\uploadPath\\gis\\环翠区农用地利用情况.shp"; + File file = new File(pathName); + + // 读取到数据存储中 + FileDataStore dataStore = FileDataStoreFinder.getDataStore(file); + // 获取特征资源 + SimpleFeatureSource simpleFeatureSource = dataStore.getFeatureSource(); + // 要素集合 + SimpleFeatureCollection simpleFeatureCollection = simpleFeatureSource.getFeatures(); + + // 要素数量 + int featureSize = simpleFeatureCollection.size(); + // 获取要素迭代器 + SimpleFeatureIterator featureIterator = simpleFeatureCollection.features(); + if(featureIterator.hasNext()){ + // 要素对象 + SimpleFeature feature = featureIterator.next(); + // 要素属性信息,名称,值,类型 + List propertyList = (List) feature.getValue(); + for(Property property : propertyList){ + System.out.println("属性名称:" + property.getName()); + System.out.println("属性值:" + property.getValue()); + System.out.println("属性类型:" + property.getType()); + System.out.println(); + } + + // 要素属性信息 + List featureAttributes = feature.getAttributes(); + + // 要素geometry的类型和坐标,如点,线,面及其组成的坐标 + Object geometryText = feature.getDefaultGeometry(); + + // geometry属性 + GeometryAttribute geometryAttribute = feature.getDefaultGeometryProperty(); + // 获取坐标参考系信息 + CoordinateReferenceSystem coordinateReferenceSystem = geometryAttribute.getDescriptor().getCoordinateReferenceSystem(); + + // geometry类型 + GeometryType geometryType = geometryAttribute.getType(); + // geometry类型名称 + Name name = geometryType.getName(); + + System.out.println("要素数量:"+ featureSize); + System.out.println("要素属性:" + featureAttributes); + System.out.println("要素geometry位置信息:" + geometryText); + System.out.println("要素geometry类型名称:" + name); + System.out.println("shp文件使用的坐标参考系:\n" + coordinateReferenceSystem); + + } + + } + + +} diff --git a/src/main/java/com/appleyk/geotools/ShpTools.java b/src/main/java/com/appleyk/geotools/ShpTools.java new file mode 100644 index 0000000..127a4f1 --- /dev/null +++ b/src/main/java/com/appleyk/geotools/ShpTools.java @@ -0,0 +1,444 @@ +package com.appleyk.geotools; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.appleyk.IO.StringTokenReader; +import com.appleyk.pojos.ShpDatas; +import com.appleyk.pojos.ShpInfo; +import com.appleyk.result.ResponseMessage; +import com.appleyk.result.ResponseResult; +import org.geotools.data.*; +import org.geotools.data.shapefile.ShapefileDataStore; +import org.geotools.data.shapefile.ShapefileDataStoreFactory; +import org.geotools.data.simple.SimpleFeatureIterator; +import org.geotools.data.simple.SimpleFeatureSource; +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureIterator; +import org.geotools.feature.simple.SimpleFeatureTypeBuilder; +import org.geotools.geojson.feature.FeatureJSON; +import org.geotools.geometry.jts.ReferencedEnvelope; +import org.geotools.map.FeatureLayer; +import org.geotools.map.Layer; +import org.geotools.map.MapContent; +import org.geotools.referencing.crs.DefaultGeographicCRS; +import org.geotools.renderer.lite.StreamingRenderer; +import org.geotools.styling.SLD; +import org.geotools.styling.Style; +import org.geotools.swing.JMapFrame; +import org.geotools.swing.data.JFileDataStoreChooser; +import org.locationtech.jts.geom.Geometry; +import org.opengis.feature.Property; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; + +import javax.imageio.ImageIO; +import javax.servlet.http.HttpServletResponse; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.io.Serializable; +import java.io.StringWriter; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + *

ShapeFile文件读写工具类

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 上午 11:54 2018-10-12 + */ +public class ShpTools { + + /**几何对象构造器【自定义的】*/ + private static GeometryCreator gCreator = GeometryCreator.getInstance(); + + /**边界*/ + private static ReferencedEnvelope bounds; + + /**画布的宽度*/ + private static final int IMAGE_WIDTH = 1280; + + /**画布的高度*/ + private static final int IMAGE_HEIGHT = 1200; + + public static void main(String[] args) throws Exception{ + + File file = new File("D:\\NsgkSoft\\files\\uploadPath\\gis\\环翠区农用地利用情况.shp"); + // 从shp文件里面读取属性信息 + //readShpByPath(file.getAbsolutePath(),10); + //System.out.println("=================下面开始往shp文件里面写几何对象==================="); + + // 使用GeoTools读取ShapeFile文件 + ShapefileDataStore store = new ShapefileDataStore(file.toURI().toURL()); + //设置编码 + Charset charset = Charset.forName("GBK"); + store.setCharset(charset); + SimpleFeatureSource sfSource = store.getFeatureSource(); + SimpleFeatureIterator sfIter = sfSource.getFeatures().features(); + // 从ShapeFile文件中遍历每一个Feature,然后将Feature转为GeoJSON字符串 + while (sfIter.hasNext()) { + SimpleFeature feature = (SimpleFeature) sfIter.next(); + // Feature转GeoJSON + + System.out.println("id ===== >>>> " + feature.getID().substring(feature.getID().indexOf(".")+1)); + + FeatureJSON fjson = new FeatureJSON(); + StringWriter writer = new StringWriter(); + fjson.writeFeature(feature, writer); + String sjson = writer.toString(); + System.out.println("sjson===== >>>> " + sjson); + + JSONObject obj = JSON.parseObject(sjson); + System.out.println("properties===== >>>> " + obj.getString("properties")); + + + } + + + /* // 先创建文件夹test + String filePath = "C:/test/test.shp"; + + String pointWkt="POINT (120.76164848270959 31.22001141278534)"; + Point point = gCreator.createPointByWKT(pointWkt); + + // Polygon【面】 + String polygonWkt="POLYGON ((103.859188 34.695908, 103.85661 34.693788, 103.862027 34.69259, 103.863709 34.695078, 103.859188 34.695908))"; + Polygon polygon = gCreator.createPolygonByWKT(polygonWkt); + + // LineString【线】 + String linestringWkt="LINESTRING(113.511315990174 41.7274734296674,113.51492087909 41.7284983348307,113.516079593384 41.727649586406,113.515907932007 41.7262243043929,113.514019656861 41.7247989907606,113.512131381714 41.7250872589898,113.51138036319 41.7256637915682,113.511315990174 41.7274734296674)"; + LineString lineString = gCreator.createLineByWKT(linestringWkt); + + // MultiPolygon【多面】 + String multiPolyWkt = "MULTIPOLYGON(((101.870371 25.19228,101.873633 25.188183,101.880564 25.184416,101.886808 25.186028,101.892043 25.189969,101.896592 25.190163,101.903716 25.190785,101.905454 25.193464,101.899897 25.196202,101.894146 25.197911,101.891657 25.19826,101.886078 25.197658,101.884211145538 25.2007060137013,101.88172564506 25.1949712942389,101.87874 25.199619,101.874641 25.200998,101.868547 25.202415,101.863741 25.202415,101.85887 25.202842,101.854557 25.202182,101.852604 25.199736,101.852282 25.19628,101.854492 25.194183,101.855608 25.192668,101.863698 25.192105,101.870371 25.19228)))"; + MultiPolygon multiPolygon = gCreator.createMulPolygonByWKT(multiPolyWkt); + + // 几何对象的范围【矩形边界】 + Envelope envelope = polygon.getEnvelopeInternal(); + System.out.println(envelope); + + // 往shp文件里面写几何对象 + writeShpByGeom(filePath,point);*/ + + + } + + + /** + * 通过shp文件路径,读取shp内容 + * @param filePath 文件路径 + */ + public static ShpDatas readShpByPath(String filePath,Integer limit) throws Exception { + + // 一个数据存储实现,允许从Shapefiles读取和写入 + ShapefileDataStore shpDataStore = new ShapefileDataStore(new File(filePath).toURI().toURL()); + // 设置编码【防止中文乱码】 + shpDataStore.setCharset(StandardCharsets.UTF_8); + + // getTypeNames:获取所有地理图层,这里我只取第一个【如果是数据表,取出的就是表名】 + String typeName = shpDataStore.getTypeNames()[0]; + System.out.println("shp【图层】名称:"+typeName); + FeatureCollection result = getFeatures(shpDataStore, typeName); + + // 迭代特征集合 + FeatureIterator iterator = result.features(); + + ShpDatas shpDatas = new ShpDatas(); + shpDatas.setName(typeName); + shpDatas.setShpPath(filePath); + buildShpDatas(limit, iterator, shpDatas); + System.out.println("二、地理要素 数量:{},数据:{}" + result.size()+"," + JSON.toJSON(shpDatas)); + iterator.close(); + return shpDatas; + } + + + /** + * 根据数据源及图层名称拿到特征集合 + * @param shpDataStore shp数据存储对象 + * @param typeName 图层名称 + * @return FeatureCollection + */ + private static FeatureCollection getFeatures(ShapefileDataStore shpDataStore, String typeName) throws IOException { + + // 通过此接口可以引用单个shapefile、数据库表等。与数据存储进行比较和约束 + FeatureSource featureSource = shpDataStore.getFeatureSource(typeName); + // 一个用于处理FeatureCollection的实用工具类。提供一个获取FeatureCollection实例的机制 + FeatureCollection result = featureSource.getFeatures(); + System.out.println("地理要素【记录】:"+result.size()+"个"); + System.out.println("=================================="); + return result; + } + + /** + * 构建shpDatas对象 + * @param limit 要素查询限制数 + * @param iterator 迭代器 + * @param shpDatas shp封装的数据集 + */ + private static void buildShpDatas(Integer limit, FeatureIterator iterator, ShpDatas shpDatas) { + // 这里我们只迭代前limit个 + int stop = 0; + while (iterator.hasNext()) { + if (stop > limit) { + break; + } + // 拿到一个特征 + SimpleFeature feature = iterator.next(); + // 取出特征里面的属性集合 + Collection p = feature.getProperties(); + + // 遍历属性集合 + Map prop = new HashMap<>(); + for (Property pro : p) { + String key = pro.getName().toString(); + String val; + if ("java.util.Date".equals(pro.getType().getBinding().getName())){ + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); + val = pro.getValue() ==null ? "" : dateFormat.format(pro.getValue()); + }else{ + val = pro.getValue()==null ?"":pro.getValue().toString(); + } + prop.put(key, val); + System.out.println("key【字段】:"+key+"\t||value【值】:"+val); + } + System.out.println("\n============================ 序号:"+stop+"\n"); + shpDatas.addProp(prop); + stop++; + } // end 最外层 while + } + + /** + * 将一个几何对象写进shapefile + * @param filePath 文件路径 + * @param geometry 几何对象 + */ + public static void writeShpByGeom(String filePath, Geometry geometry) throws Exception{ + + ShapefileDataStore ds = getshpDS(filePath, geometry); + + FeatureWriter writer = ds.getFeatureWriter(ds.getTypeNames()[0], + Transaction.AUTO_COMMIT); + + // Interface SimpleFeature:一个由固定列表值以已知顺序组成的SimpleFeatureType实例。 + SimpleFeature feature = writer.next(); + feature.setAttribute("name", "XXXX名称"); + feature.setAttribute("path", "c:/test"); + feature.setAttribute("the_geom", geometry); + feature.setAttribute("id", 1010L); + feature.setAttribute("des", "XXXX描述"); + + System.out.println("========= 写入【"+geometry.getGeometryType()+"】成功 !========="); + + // 写入 + writer.write(); + // 关闭 + writer.close(); + // 释放资源 + ds.dispose(); + } + + + /** + * 将一个几何对象写进shapefile + * @param shpInfo shp信息 + */ + public static ResponseResult writeShpByGeom(ShpInfo shpInfo) throws Exception{ + + // 特殊字符串解析器 + StringTokenReader reader = new StringTokenReader(); + // 根据几何对象的wkt字符串,反解【解析】成Geometry对象 + Geometry geometry = reader.read(shpInfo.getGeom()); + // 拿到shp对象所在的目录【文件夹】 + String path = shpInfo.getPath(); + File file = new File(path); + if(!file.exists()){ + file.mkdir(); + } + + if(!file.isDirectory()){ + return new ResponseResult(ResponseMessage.BAD_REQUEST,"path不是有效的文件夹" ); + } + + String filePath = shpInfo.getPath()+"/"+shpInfo.getName()+".shp"; + ShapefileDataStore ds = getshpDS(filePath, geometry); + String typeName = ds.getTypeNames()[0]; + FeatureWriter writer ; + if(shpInfo.isAppendWrite()){ + // 追加写几何对象 + writer = ds.getFeatureWriterAppend(typeName, Transaction.AUTO_COMMIT); + }else{ + // 覆盖写几何对象 + writer = ds.getFeatureWriter(typeName, Transaction.AUTO_COMMIT); + } + + // Interface SimpleFeature:一个由固定列表值以已知顺序组成的SimpleFeatureType实例。 + SimpleFeature feature = writer.next(); + feature.setAttribute("name", shpInfo.getName()); + feature.setAttribute("path", shpInfo.getPath()); + feature.setAttribute("the_geom", geometry); + feature.setAttribute("id", shpInfo.getId()); + feature.setAttribute("des", shpInfo.getDes()); + + System.out.println("========= 写入【"+geometry.getGeometryType()+"】成功 !========="); + + // 写入 + writer.write(); + // 关闭 + writer.close(); + // 释放资源 + ds.dispose(); + // 返回创建成功后的shp文件路径 + return new ResponseResult(ResponseMessage.OK,filePath); + + } + + /** + * 拿到配置好的DataStore + * @param filePath 文件路径 + * @param geometry 几何对象 + * @return ShapefileDataStore + */ + private static ShapefileDataStore getshpDS(String filePath, Geometry geometry) throws IOException { + // 1.创建shape文件对象 + File file = new File(filePath); + + Map params = new HashMap<>(); + + // 2、用于捕获参数需求的数据类 URLP:url to the .shp file. + params.put(ShapefileDataStoreFactory.URLP.key, file.toURI().toURL()); + + // 3、创建一个新的数据存储【如果存在,则不创建】 + ShapefileDataStore ds = (ShapefileDataStore) new ShapefileDataStoreFactory().createNewDataStore(params); + + // 4、定义图形信息和属性信息 -- SimpleFeatureTypeBuilder 构造简单特性类型的构造器 + SimpleFeatureTypeBuilder tBuilder = new SimpleFeatureTypeBuilder(); + + // 5、设置 -- WGS84:一个二维地理坐标参考系统,使用WGS84数据 + tBuilder.setCRS(DefaultGeographicCRS.WGS84); + tBuilder.setName("shapefile"); + + // 添加名称 + tBuilder.add("name", String.class); + // 添加shp所在目录名称 + tBuilder.add("path", String.class); + // 添加 一个几何对象 + tBuilder.add("the_geom", geometry.getClass()); + // 添加一个id + tBuilder.add("id", Long.class); + // 添加描述 + tBuilder.add("des", String.class); + + // 设置此数据存储的特征类型 + ds.createSchema(tBuilder.buildFeatureType()); + // 设置编码 + ds.setCharset(StandardCharsets.UTF_8); + return ds; + } + + /** + * 打开shp文件,获取地图内容 + * @param filePath 文件路径 + * @param isOpenByChoose 是否自定义打开shp文件 + * @throws Exception + */ + public static MapContent getMapContentByPath(String filePath,boolean isOpenByChoose,String color) throws Exception{ + + File file; + if(isOpenByChoose){ + // 1.1、 数据源选择 shp扩展类型的 + file = JFileDataStoreChooser.showOpenFile("shp", null); + }else{ + // 1.2、根据路径拿到文件对象 + file = new File(filePath); + } + + if(file==null){ + return null; + } + // 2、得到打开的文件的数据源 + FileDataStore store = FileDataStoreFinder.getDataStore(file); + + // 3、设置数据源的编码,防止中文乱码 + ((ShapefileDataStore)store).setCharset(Charset.forName("UTF-8")); + + /** + * 使用FeatureSource管理要素数据 + * 使用Style(SLD)管理样式 + * 使用Layer管理显示 + * 使用MapContent管理所有地图相关信息 + */ + + // 4、以java对象的方式访问地理信息 -- 简单地理要素 + SimpleFeatureSource featureSource = store.getFeatureSource(); + + bounds = featureSource.getBounds(); + + // 5、创建映射内容,并将我们的shapfile添加进去 + MapContent mapContent = new MapContent(); + + // 6、设置容器的标题 + mapContent.setTitle("Appleyk's GeoTools"); + Color color1; + if(color == null || "".equals(color.toLowerCase())){ + color1 = Color.BLACK; + }else if("red".equals(color.toLowerCase())){ + color1 = Color.RED; + }else if("green".equals(color.toLowerCase())){ + color1 = Color.GREEN; + }else if("blue".equals(color.toLowerCase())){ + color1 = Color.BLUE; + }else{ + color1 = Color.getColor(color); + } + + // 7、创建简单样式 【颜色填充】 + Style style = SLD.createSimpleStyle(featureSource.getSchema(),color1); + + // 8、显示【shapfile地理信息+样式】 + Layer layer = new FeatureLayer(featureSource, style); + + // 9、将显示添加进map容器 + mapContent.addLayer(layer); + + return mapContent; + } + + public static void showMap(MapContent mapContent){ + JMapFrame.showMap(mapContent); + } + + /** + * shp文件转Image【格式定png】 + * @param shpFilePath shp目标文件 + * @param destImagePath 转成图片的文件 == 如果没有,转成的图片写进response输出流里 + * @param response 响应流 + * @throws Exception + */ + public static void shp2Image(String shpFilePath,String destImagePath,String color, HttpServletResponse response) throws Exception{ + + // 流渲染器 + StreamingRenderer renderer = new StreamingRenderer(); + MapContent mapContent = getMapContentByPath(shpFilePath,false,color ); + renderer.setMapContent(mapContent); + Rectangle imageBounds = new Rectangle(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT); + BufferedImage dumpImage = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT, BufferedImage.TYPE_INT_RGB); + Graphics2D g2d = dumpImage.createGraphics(); + g2d.fillRect(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + renderer.paint(g2d, imageBounds, bounds); + g2d.dispose(); + if(destImagePath == null || "".equals(destImagePath)){ + ImageIO.write(dumpImage, "png", response.getOutputStream()); + }else{ + ImageIO.write(dumpImage, "png", new File(destImagePath)); + } + } + + +} diff --git a/src/main/java/com/appleyk/pojos/ShpDatas.java b/src/main/java/com/appleyk/pojos/ShpDatas.java new file mode 100644 index 0000000..57ab150 --- /dev/null +++ b/src/main/java/com/appleyk/pojos/ShpDatas.java @@ -0,0 +1,55 @@ +package com.appleyk.pojos; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + *

shp数据模型对象 -- 针对读

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 下午 2018年10月24日16:31:30 + */ +public class ShpDatas { + + private String name; + + /** 属性【字段】集合*/ + private List> props; + + /** shp文件路径地址*/ + private String shpPath; + + public ShpDatas(){ + props = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List> getProps() { + return props; + } + + public void setProps(List> props) { + this.props = props; + } + + public void addProp(Map prop){ + this.props.add(prop); + } + + public String getShpPath() { + return shpPath; + } + + public void setShpPath(String shpPath) { + this.shpPath = shpPath; + } + +} diff --git a/src/main/java/com/appleyk/pojos/ShpInfo.java b/src/main/java/com/appleyk/pojos/ShpInfo.java new file mode 100644 index 0000000..67bd376 --- /dev/null +++ b/src/main/java/com/appleyk/pojos/ShpInfo.java @@ -0,0 +1,92 @@ +package com.appleyk.pojos; + +/** + *

shp业务模型对象 -- 针对写

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 上午 2018年10月25日09:17:44 + */ +public class ShpInfo { + + + /** + * 图层名称 + */ + private String name; + + /** + * 往哪个路径下写shp + */ + private String path; + + /** + * 几何对象WKT + */ + private String geom; + + /** + * 标识 + */ + private String id; + + /** + * 描述 + */ + private String des; + + /** + * 是否追加写 + */ + private boolean appendWrite = false; + + public ShpInfo(){ + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getGeom() { + return geom; + } + + public void setGeom(String geom) { + this.geom = geom; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getDes() { + return des; + } + + public void setDes(String des) { + this.des = des; + } + + public boolean isAppendWrite() { + return appendWrite; + } + + public void setAppendWrite(boolean appendWrite) { + this.appendWrite = appendWrite; + } +} diff --git a/src/main/java/com/appleyk/result/ResponseMessage.java b/src/main/java/com/appleyk/result/ResponseMessage.java new file mode 100644 index 0000000..1160ef9 --- /dev/null +++ b/src/main/java/com/appleyk/result/ResponseMessage.java @@ -0,0 +1,31 @@ +package com.appleyk.result; + +public enum ResponseMessage { + + /** + * 成功 + */ + OK(200,"成功"), + + /** + * 失败 + */ + BAD_REQUEST(400,"错误的请求"); + + + private final int status; + private final String message; + + ResponseMessage(int status, String message){ + this.status = status; + this.message = message; + } + + public int getStatus() { + return status; + } + public String getMessage() { + return message; + } + +} diff --git a/src/main/java/com/appleyk/result/ResponseResult.java b/src/main/java/com/appleyk/result/ResponseResult.java new file mode 100644 index 0000000..b114cb6 --- /dev/null +++ b/src/main/java/com/appleyk/result/ResponseResult.java @@ -0,0 +1,153 @@ +package com.appleyk.result; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class ResponseResult implements Serializable { + + private static final long serialVersionUID = 2719931935414658118L; + + private final Integer status; + + private final String message; + + @JsonInclude(value = Include.NON_NULL) + private final Object data; + + @JsonInclude(value = Include.NON_EMPTY) + private final String[] exceptions; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private final Date timestamp; + + public ResponseResult(Integer status, String message) { + + super(); + this.status = status; + this.message = message; + this.data = null; + this.timestamp = new Date(); + this.exceptions = null; + } + + public ResponseResult() { + + super(); + this.status = null; + this.message = null; + this.data = null; + this.timestamp = new Date(); + this.exceptions = null; + + } + + public ResponseResult(ResponseMessage rm){ + + super(); + this.status = rm.getStatus(); + this.message = rm.getMessage(); + this.data = null; + this.timestamp = new Date(); + this.exceptions = null; + } + + public ResponseResult(ResponseMessage rm, Object data){ + super(); + this.status = rm.getStatus(); + this.message = rm.getMessage(); + this.data = data; + this.timestamp = new Date(); + this.exceptions = null; + } + + public ResponseResult(ResponseMessage rm, Long data){ + super(); + this.status = rm.getStatus(); + this.message = rm.getMessage(); + HashMap result = new HashMap<>(); + result.put("id", data); + this.data = result; + this.timestamp = new Date(); + this.exceptions = null; + } + + + public ResponseResult(Integer status, String message, Object data) { + super(); + this.status = status; + this.message = message; + this.data = data; + this.timestamp = new Date(); + this.exceptions = null; + } + + public ResponseResult(Integer status, String message, String key, Object value) { + super(); + this.status = status; + this.message = message; + Map map = new HashMap(); + + if (key == null || ("").equals(key)) { + map.put("key", value); + } else { + map.put(key, value); + } + this.data = map; + this.timestamp = new Date(); + this.exceptions = null; + + } + + public ResponseResult(Integer status, Throwable ex) { + super(); + this.status = status; + this.message = ex.getMessage(); + this.data = null; + StackTraceElement[] stackTeanceElement = ex.getStackTrace(); + this.exceptions = new String[stackTeanceElement.length]; + for (int i = 0; i < stackTeanceElement.length; i++) { + this.exceptions[i] = stackTeanceElement[i].toString(); + } + this.timestamp = new Date(); + } + + public ResponseResult(Integer status, String message, Throwable ex) { + + super(); + this.status = status; + this.message = message; + this.data = null; + StackTraceElement[] stackTeanceElement = ex.getStackTrace(); + this.exceptions = new String[stackTeanceElement.length]; + for (int i = 0; i < stackTeanceElement.length; i++) { + this.exceptions[i] = stackTeanceElement[i].toString(); + } + this.timestamp = new Date(); + + } + public Integer getStatus() { + return status; + } + + public String getMessage() { + return message; + } + + public Object getData() { + return data; + } + + public String[] getExceptions() { + return exceptions; + } + + public Date getTimestamp() { + return timestamp; + } +} diff --git a/src/main/java/com/appleyk/service/ShpService.java b/src/main/java/com/appleyk/service/ShpService.java new file mode 100644 index 0000000..7acb5fa --- /dev/null +++ b/src/main/java/com/appleyk/service/ShpService.java @@ -0,0 +1,33 @@ +package com.appleyk.service; + +import com.appleyk.geotools.ShpTools; +import com.appleyk.pojos.ShpDatas; +import com.appleyk.pojos.ShpInfo; +import com.appleyk.result.ResponseMessage; +import com.appleyk.result.ResponseResult; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletResponse; + +/** + *

Shp业务逻辑类

+ * @author Appleyk + * @blob https://blog.csdn.net/appleyk + * @date Created on 下午 2018年10月24日17:17:46 + */ +@Service +public class ShpService { + + public ResponseResult getShpDatas(String shpPath,Integer limit) throws Exception{ + ShpDatas shpDatas = ShpTools.readShpByPath(shpPath, limit); + return new ResponseResult(ResponseMessage.OK,shpDatas); + } + + public void showShp(String shpPath,String imagePath,String color, HttpServletResponse response) throws Exception{ + ShpTools.shp2Image(shpPath, imagePath ,color,response); + } + + public ResponseResult writeShp(ShpInfo shpInfo) throws Exception{ + return ShpTools.writeShpByGeom(shpInfo); + } +} diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 0000000..bcc3bee --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1,3 @@ +server.port=8081 +server.servlet.session.timeout=10 +server.tomcat.uri-encoding=utf8 diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties new file mode 100644 index 0000000..209423f --- /dev/null +++ b/src/main/resources/application-prod.properties @@ -0,0 +1,3 @@ +server.port=8082 +server.servlet.session.timeout=10 +server.tomcat.uri-encoding=utf8 diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties new file mode 100644 index 0000000..ed4a1b1 --- /dev/null +++ b/src/main/resources/application-test.properties @@ -0,0 +1,3 @@ +server.port=8083 +server.servlet.session.timeout=10 +server.tomcat.uri-encoding=utf8 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..24be2c7 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,23 @@ +#SpringApplication\u5C06\u4ECE\u4EE5\u4E0B\u4F4D\u7F6E\u52A0\u8F7Dapplication.properties\u6587\u4EF6\uFF0C \u5E76\u628A\u5B83\u4EEC\u6DFB\u52A0\u5230Spring Environment\u4E2D\uFF1A +#1. \u5F53\u524D\u76EE\u5F55\u4E0B\u7684\u4E00\u4E2A/config\u5B50\u76EE\u5F55 +#2. \u5F53\u524D\u76EE\u5F55 +#3. \u4E00\u4E2Aclasspath\u4E0B\u7684/config\u5305 +#4. classpath\u6839\u8DEF\u5F84\uFF08root\uFF09 +#\u8FD9\u4E2A\u5217\u8868\u662F\u6309\u4F18\u5148\u7EA7\u6392\u5E8F\u7684\uFF08\u5217\u8868\u4E2D\u4F4D\u7F6E\u9AD8\u7684\u5C06\u8986\u76D6\u4F4D\u7F6E\u4F4E\u7684\uFF09 \u3002 +#\u6CE8\uFF1A\u4F60\u53EF\u4EE5\u4F7F\u7528YAML\uFF08'.yml'\uFF09 \u6587\u4EF6\u66FF\u4EE3'.properties' + +#Spring-Boot\u591A\u73AF\u5883\u914D\u7F6E -- dev\uFF1A \u672C\u5730\u5F00\u53D1\u73AF\u5883\u3010\u7AEF\u53E3\uFF1A8081\u3011 +#Spring-Boot\u591A\u73AF\u5883\u914D\u7F6E -- prod\uFF1A\u7EBF\u4E0A\u751F\u4EA7\u73AF\u5883\u3010\u7AEF\u53E3\uFF1A8082\u3011 +#Spring-Boot\u591A\u73AF\u5883\u914D\u7F6E -- test\uFF1A\u7EBF\u4E0A\u6D4B\u8BD5\u73AF\u5883\u3010\u7AEF\u53E3\uFF1A8083\u3011 + +#\u5F00\u542F\u591A\u6587\u4EF6\u4E0A\u4F20 +spring.servlet.multipart.enabled=true + +spring.profiles.active = dev + +#\u5728application.properties\u6587\u4EF6\u4E2D\u5F15\u5165\u65E5\u5FD7\u914D\u7F6E\u6587\u4EF6 +#===================================== log ============================= +logging.config=classpath:logback-boot.xml + + + diff --git a/src/main/resources/logback-boot.xml b/src/main/resources/logback-boot.xml new file mode 100644 index 0000000..6f93aa0 --- /dev/null +++ b/src/main/resources/logback-boot.xml @@ -0,0 +1,53 @@ + + + + + + + %d %p (%file:%line\)- %m%n + + UTF-8 + + + + + + + + opt/spring-boot-web/logs/sys.log + + + + + + log/sys.%d.%i.log + + 30 + + + 10MB + + + + + + %d %p (%file:%line\)- %m%n + + + UTF-8 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/ReadMe b/src/main/resources/static/ReadMe new file mode 100644 index 0000000..17f8377 --- /dev/null +++ b/src/main/resources/static/ReadMe @@ -0,0 +1,12 @@ +本项目的测试shp均在shpTest文件夹下 + +============== 一个shp只支持一种几何类型 + +Point类型 : 某地方的大棚数据 +LineString类型: 中国铁路网【部分】 +Polygon类型 : 中国建筑物【部分 -- 北京故宫】 + +============== + +E:\Spring-boot\Spring-Boot-Shaper\src\main\resources\static\shpTest[Point]\dp_tl.shp +E:\Spring-boot\Spring-Boot-Shaper\src\main\resources\static\shpTest[Polygon]\china_building_part.shp \ No newline at end of file diff --git a/src/main/resources/static/shpTest[LineString]/china_railways.cpg b/src/main/resources/static/shpTest[LineString]/china_railways.cpg new file mode 100644 index 0000000..3ad133c --- /dev/null +++ b/src/main/resources/static/shpTest[LineString]/china_railways.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/src/main/resources/static/shpTest[LineString]/china_railways.dbf b/src/main/resources/static/shpTest[LineString]/china_railways.dbf new file mode 100644 index 0000000..d7baed4 Binary files /dev/null and b/src/main/resources/static/shpTest[LineString]/china_railways.dbf differ diff --git a/src/main/resources/static/shpTest[LineString]/china_railways.prj b/src/main/resources/static/shpTest[LineString]/china_railways.prj new file mode 100644 index 0000000..a30c00a --- /dev/null +++ b/src/main/resources/static/shpTest[LineString]/china_railways.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/src/main/resources/static/shpTest[LineString]/china_railways.qpj b/src/main/resources/static/shpTest[LineString]/china_railways.qpj new file mode 100644 index 0000000..5fbc831 --- /dev/null +++ b/src/main/resources/static/shpTest[LineString]/china_railways.qpj @@ -0,0 +1 @@ +GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]] diff --git a/src/main/resources/static/shpTest[LineString]/china_railways.shp b/src/main/resources/static/shpTest[LineString]/china_railways.shp new file mode 100644 index 0000000..5c48a12 Binary files /dev/null and b/src/main/resources/static/shpTest[LineString]/china_railways.shp differ diff --git a/src/main/resources/static/shpTest[LineString]/china_railways.shx b/src/main/resources/static/shpTest[LineString]/china_railways.shx new file mode 100644 index 0000000..9accd8b Binary files /dev/null and b/src/main/resources/static/shpTest[LineString]/china_railways.shx differ diff --git a/src/main/resources/static/shpTest[Point]/dp_tl.dbf b/src/main/resources/static/shpTest[Point]/dp_tl.dbf new file mode 100644 index 0000000..1054fc6 Binary files /dev/null and b/src/main/resources/static/shpTest[Point]/dp_tl.dbf differ diff --git a/src/main/resources/static/shpTest[Point]/dp_tl.prj b/src/main/resources/static/shpTest[Point]/dp_tl.prj new file mode 100644 index 0000000..f45cbad --- /dev/null +++ b/src/main/resources/static/shpTest[Point]/dp_tl.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/src/main/resources/static/shpTest[Point]/dp_tl.qix b/src/main/resources/static/shpTest[Point]/dp_tl.qix new file mode 100644 index 0000000..1740d31 Binary files /dev/null and b/src/main/resources/static/shpTest[Point]/dp_tl.qix differ diff --git a/src/main/resources/static/shpTest[Point]/dp_tl.sbn b/src/main/resources/static/shpTest[Point]/dp_tl.sbn new file mode 100644 index 0000000..e674979 Binary files /dev/null and b/src/main/resources/static/shpTest[Point]/dp_tl.sbn differ diff --git a/src/main/resources/static/shpTest[Point]/dp_tl.sbx b/src/main/resources/static/shpTest[Point]/dp_tl.sbx new file mode 100644 index 0000000..c60a57d Binary files /dev/null and b/src/main/resources/static/shpTest[Point]/dp_tl.sbx differ diff --git a/src/main/resources/static/shpTest[Point]/dp_tl.shp b/src/main/resources/static/shpTest[Point]/dp_tl.shp new file mode 100644 index 0000000..9899c49 Binary files /dev/null and b/src/main/resources/static/shpTest[Point]/dp_tl.shp differ diff --git a/src/main/resources/static/shpTest[Point]/dp_tl.shp.xml b/src/main/resources/static/shpTest[Point]/dp_tl.shp.xml new file mode 100644 index 0000000..ab10cb2 --- /dev/null +++ b/src/main/resources/static/shpTest[Point]/dp_tl.shp.xml @@ -0,0 +1,2 @@ + +20180919095845001.0TRUECalculateField dp_tl z [FID] VB #CalculateField dp_tl z [FID] VB #CalculateField dp_tl z "[z] +1" VB # diff --git a/src/main/resources/static/shpTest[Point]/dp_tl.shx b/src/main/resources/static/shpTest[Point]/dp_tl.shx new file mode 100644 index 0000000..6939a93 Binary files /dev/null and b/src/main/resources/static/shpTest[Point]/dp_tl.shx differ diff --git a/src/main/resources/static/shpTest[Polygon]/china_building_part.cpg b/src/main/resources/static/shpTest[Polygon]/china_building_part.cpg new file mode 100644 index 0000000..3ad133c --- /dev/null +++ b/src/main/resources/static/shpTest[Polygon]/china_building_part.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/src/main/resources/static/shpTest[Polygon]/china_building_part.dbf b/src/main/resources/static/shpTest[Polygon]/china_building_part.dbf new file mode 100644 index 0000000..3cf70e0 Binary files /dev/null and b/src/main/resources/static/shpTest[Polygon]/china_building_part.dbf differ diff --git a/src/main/resources/static/shpTest[Polygon]/china_building_part.prj b/src/main/resources/static/shpTest[Polygon]/china_building_part.prj new file mode 100644 index 0000000..a30c00a --- /dev/null +++ b/src/main/resources/static/shpTest[Polygon]/china_building_part.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/src/main/resources/static/shpTest[Polygon]/china_building_part.qix b/src/main/resources/static/shpTest[Polygon]/china_building_part.qix new file mode 100644 index 0000000..73f95fc Binary files /dev/null and b/src/main/resources/static/shpTest[Polygon]/china_building_part.qix differ diff --git a/src/main/resources/static/shpTest[Polygon]/china_building_part.qpj b/src/main/resources/static/shpTest[Polygon]/china_building_part.qpj new file mode 100644 index 0000000..5fbc831 --- /dev/null +++ b/src/main/resources/static/shpTest[Polygon]/china_building_part.qpj @@ -0,0 +1 @@ +GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]] diff --git a/src/main/resources/static/shpTest[Polygon]/china_building_part.shp b/src/main/resources/static/shpTest[Polygon]/china_building_part.shp new file mode 100644 index 0000000..82a85c0 Binary files /dev/null and b/src/main/resources/static/shpTest[Polygon]/china_building_part.shp differ diff --git a/src/main/resources/static/shpTest[Polygon]/china_building_part.shx b/src/main/resources/static/shpTest[Polygon]/china_building_part.shx new file mode 100644 index 0000000..d325adc Binary files /dev/null and b/src/main/resources/static/shpTest[Polygon]/china_building_part.shx differ diff --git a/src/test/java/com/appleyk/SpringbootshaperApplicationTests.java b/src/test/java/com/appleyk/SpringbootshaperApplicationTests.java new file mode 100644 index 0000000..5f7174f --- /dev/null +++ b/src/test/java/com/appleyk/SpringbootshaperApplicationTests.java @@ -0,0 +1,16 @@ +package com.appleyk; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class SpringbootshaperApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/target/classes/application-dev.properties b/target/classes/application-dev.properties new file mode 100644 index 0000000..bcc3bee --- /dev/null +++ b/target/classes/application-dev.properties @@ -0,0 +1,3 @@ +server.port=8081 +server.servlet.session.timeout=10 +server.tomcat.uri-encoding=utf8 diff --git a/target/classes/application-prod.properties b/target/classes/application-prod.properties new file mode 100644 index 0000000..209423f --- /dev/null +++ b/target/classes/application-prod.properties @@ -0,0 +1,3 @@ +server.port=8082 +server.servlet.session.timeout=10 +server.tomcat.uri-encoding=utf8 diff --git a/target/classes/application-test.properties b/target/classes/application-test.properties new file mode 100644 index 0000000..ed4a1b1 --- /dev/null +++ b/target/classes/application-test.properties @@ -0,0 +1,3 @@ +server.port=8083 +server.servlet.session.timeout=10 +server.tomcat.uri-encoding=utf8 diff --git a/target/classes/application.properties b/target/classes/application.properties new file mode 100644 index 0000000..24be2c7 --- /dev/null +++ b/target/classes/application.properties @@ -0,0 +1,23 @@ +#SpringApplication\u5C06\u4ECE\u4EE5\u4E0B\u4F4D\u7F6E\u52A0\u8F7Dapplication.properties\u6587\u4EF6\uFF0C \u5E76\u628A\u5B83\u4EEC\u6DFB\u52A0\u5230Spring Environment\u4E2D\uFF1A +#1. \u5F53\u524D\u76EE\u5F55\u4E0B\u7684\u4E00\u4E2A/config\u5B50\u76EE\u5F55 +#2. \u5F53\u524D\u76EE\u5F55 +#3. \u4E00\u4E2Aclasspath\u4E0B\u7684/config\u5305 +#4. classpath\u6839\u8DEF\u5F84\uFF08root\uFF09 +#\u8FD9\u4E2A\u5217\u8868\u662F\u6309\u4F18\u5148\u7EA7\u6392\u5E8F\u7684\uFF08\u5217\u8868\u4E2D\u4F4D\u7F6E\u9AD8\u7684\u5C06\u8986\u76D6\u4F4D\u7F6E\u4F4E\u7684\uFF09 \u3002 +#\u6CE8\uFF1A\u4F60\u53EF\u4EE5\u4F7F\u7528YAML\uFF08'.yml'\uFF09 \u6587\u4EF6\u66FF\u4EE3'.properties' + +#Spring-Boot\u591A\u73AF\u5883\u914D\u7F6E -- dev\uFF1A \u672C\u5730\u5F00\u53D1\u73AF\u5883\u3010\u7AEF\u53E3\uFF1A8081\u3011 +#Spring-Boot\u591A\u73AF\u5883\u914D\u7F6E -- prod\uFF1A\u7EBF\u4E0A\u751F\u4EA7\u73AF\u5883\u3010\u7AEF\u53E3\uFF1A8082\u3011 +#Spring-Boot\u591A\u73AF\u5883\u914D\u7F6E -- test\uFF1A\u7EBF\u4E0A\u6D4B\u8BD5\u73AF\u5883\u3010\u7AEF\u53E3\uFF1A8083\u3011 + +#\u5F00\u542F\u591A\u6587\u4EF6\u4E0A\u4F20 +spring.servlet.multipart.enabled=true + +spring.profiles.active = dev + +#\u5728application.properties\u6587\u4EF6\u4E2D\u5F15\u5165\u65E5\u5FD7\u914D\u7F6E\u6587\u4EF6 +#===================================== log ============================= +logging.config=classpath:logback-boot.xml + + + diff --git a/target/classes/com/appleyk/IO/StringTokenReader.class b/target/classes/com/appleyk/IO/StringTokenReader.class new file mode 100644 index 0000000..d715609 Binary files /dev/null and b/target/classes/com/appleyk/IO/StringTokenReader.class differ diff --git a/target/classes/com/appleyk/ShpApplication.class b/target/classes/com/appleyk/ShpApplication.class new file mode 100644 index 0000000..519a625 Binary files /dev/null and b/target/classes/com/appleyk/ShpApplication.class differ diff --git a/target/classes/com/appleyk/controller/ShpController.class b/target/classes/com/appleyk/controller/ShpController.class new file mode 100644 index 0000000..9fc4e5f Binary files /dev/null and b/target/classes/com/appleyk/controller/ShpController.class differ diff --git a/target/classes/com/appleyk/exception/GlobalExceptionHandler.class b/target/classes/com/appleyk/exception/GlobalExceptionHandler.class new file mode 100644 index 0000000..9110ca8 Binary files /dev/null and b/target/classes/com/appleyk/exception/GlobalExceptionHandler.class differ diff --git a/target/classes/com/appleyk/geotools/GeoUtils.class b/target/classes/com/appleyk/geotools/GeoUtils.class new file mode 100644 index 0000000..f5427b2 Binary files /dev/null and b/target/classes/com/appleyk/geotools/GeoUtils.class differ diff --git a/target/classes/com/appleyk/geotools/GeometryCreator.class b/target/classes/com/appleyk/geotools/GeometryCreator.class new file mode 100644 index 0000000..3c69f12 Binary files /dev/null and b/target/classes/com/appleyk/geotools/GeometryCreator.class differ diff --git a/target/classes/com/appleyk/geotools/ShapeTools.class b/target/classes/com/appleyk/geotools/ShapeTools.class new file mode 100644 index 0000000..9a51865 Binary files /dev/null and b/target/classes/com/appleyk/geotools/ShapeTools.class differ diff --git a/target/classes/com/appleyk/geotools/ShpTools.class b/target/classes/com/appleyk/geotools/ShpTools.class new file mode 100644 index 0000000..0234281 Binary files /dev/null and b/target/classes/com/appleyk/geotools/ShpTools.class differ diff --git a/target/classes/com/appleyk/pojos/ShpDatas.class b/target/classes/com/appleyk/pojos/ShpDatas.class new file mode 100644 index 0000000..8cf4871 Binary files /dev/null and b/target/classes/com/appleyk/pojos/ShpDatas.class differ diff --git a/target/classes/com/appleyk/pojos/ShpInfo.class b/target/classes/com/appleyk/pojos/ShpInfo.class new file mode 100644 index 0000000..538efc4 Binary files /dev/null and b/target/classes/com/appleyk/pojos/ShpInfo.class differ diff --git a/target/classes/com/appleyk/result/ResponseMessage.class b/target/classes/com/appleyk/result/ResponseMessage.class new file mode 100644 index 0000000..6165869 Binary files /dev/null and b/target/classes/com/appleyk/result/ResponseMessage.class differ diff --git a/target/classes/com/appleyk/result/ResponseResult.class b/target/classes/com/appleyk/result/ResponseResult.class new file mode 100644 index 0000000..6937ec4 Binary files /dev/null and b/target/classes/com/appleyk/result/ResponseResult.class differ diff --git a/target/classes/com/appleyk/service/ShpService.class b/target/classes/com/appleyk/service/ShpService.class new file mode 100644 index 0000000..39949e7 Binary files /dev/null and b/target/classes/com/appleyk/service/ShpService.class differ diff --git a/target/classes/logback-boot.xml b/target/classes/logback-boot.xml new file mode 100644 index 0000000..6f93aa0 --- /dev/null +++ b/target/classes/logback-boot.xml @@ -0,0 +1,53 @@ + + + + + + + %d %p (%file:%line\)- %m%n + + UTF-8 + + + + + + + + opt/spring-boot-web/logs/sys.log + + + + + + log/sys.%d.%i.log + + 30 + + + 10MB + + + + + + %d %p (%file:%line\)- %m%n + + + UTF-8 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/classes/static/ReadMe b/target/classes/static/ReadMe new file mode 100644 index 0000000..17f8377 --- /dev/null +++ b/target/classes/static/ReadMe @@ -0,0 +1,12 @@ +本项目的测试shp均在shpTest文件夹下 + +============== 一个shp只支持一种几何类型 + +Point类型 : 某地方的大棚数据 +LineString类型: 中国铁路网【部分】 +Polygon类型 : 中国建筑物【部分 -- 北京故宫】 + +============== + +E:\Spring-boot\Spring-Boot-Shaper\src\main\resources\static\shpTest[Point]\dp_tl.shp +E:\Spring-boot\Spring-Boot-Shaper\src\main\resources\static\shpTest[Polygon]\china_building_part.shp \ No newline at end of file diff --git a/target/classes/static/shpTest[LineString]/china_railways.cpg b/target/classes/static/shpTest[LineString]/china_railways.cpg new file mode 100644 index 0000000..3ad133c --- /dev/null +++ b/target/classes/static/shpTest[LineString]/china_railways.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/target/classes/static/shpTest[LineString]/china_railways.dbf b/target/classes/static/shpTest[LineString]/china_railways.dbf new file mode 100644 index 0000000..d7baed4 Binary files /dev/null and b/target/classes/static/shpTest[LineString]/china_railways.dbf differ diff --git a/target/classes/static/shpTest[LineString]/china_railways.prj b/target/classes/static/shpTest[LineString]/china_railways.prj new file mode 100644 index 0000000..a30c00a --- /dev/null +++ b/target/classes/static/shpTest[LineString]/china_railways.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/target/classes/static/shpTest[LineString]/china_railways.qpj b/target/classes/static/shpTest[LineString]/china_railways.qpj new file mode 100644 index 0000000..5fbc831 --- /dev/null +++ b/target/classes/static/shpTest[LineString]/china_railways.qpj @@ -0,0 +1 @@ +GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]] diff --git a/target/classes/static/shpTest[LineString]/china_railways.shp b/target/classes/static/shpTest[LineString]/china_railways.shp new file mode 100644 index 0000000..5c48a12 Binary files /dev/null and b/target/classes/static/shpTest[LineString]/china_railways.shp differ diff --git a/target/classes/static/shpTest[LineString]/china_railways.shx b/target/classes/static/shpTest[LineString]/china_railways.shx new file mode 100644 index 0000000..9accd8b Binary files /dev/null and b/target/classes/static/shpTest[LineString]/china_railways.shx differ diff --git a/target/classes/static/shpTest[Point]/dp_tl.dbf b/target/classes/static/shpTest[Point]/dp_tl.dbf new file mode 100644 index 0000000..1054fc6 Binary files /dev/null and b/target/classes/static/shpTest[Point]/dp_tl.dbf differ diff --git a/target/classes/static/shpTest[Point]/dp_tl.prj b/target/classes/static/shpTest[Point]/dp_tl.prj new file mode 100644 index 0000000..f45cbad --- /dev/null +++ b/target/classes/static/shpTest[Point]/dp_tl.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] \ No newline at end of file diff --git a/target/classes/static/shpTest[Point]/dp_tl.qix b/target/classes/static/shpTest[Point]/dp_tl.qix new file mode 100644 index 0000000..1740d31 Binary files /dev/null and b/target/classes/static/shpTest[Point]/dp_tl.qix differ diff --git a/target/classes/static/shpTest[Point]/dp_tl.sbn b/target/classes/static/shpTest[Point]/dp_tl.sbn new file mode 100644 index 0000000..e674979 Binary files /dev/null and b/target/classes/static/shpTest[Point]/dp_tl.sbn differ diff --git a/target/classes/static/shpTest[Point]/dp_tl.sbx b/target/classes/static/shpTest[Point]/dp_tl.sbx new file mode 100644 index 0000000..c60a57d Binary files /dev/null and b/target/classes/static/shpTest[Point]/dp_tl.sbx differ diff --git a/target/classes/static/shpTest[Point]/dp_tl.shp b/target/classes/static/shpTest[Point]/dp_tl.shp new file mode 100644 index 0000000..9899c49 Binary files /dev/null and b/target/classes/static/shpTest[Point]/dp_tl.shp differ diff --git a/target/classes/static/shpTest[Point]/dp_tl.shp.xml b/target/classes/static/shpTest[Point]/dp_tl.shp.xml new file mode 100644 index 0000000..ab10cb2 --- /dev/null +++ b/target/classes/static/shpTest[Point]/dp_tl.shp.xml @@ -0,0 +1,2 @@ + +20180919095845001.0TRUECalculateField dp_tl z [FID] VB #CalculateField dp_tl z [FID] VB #CalculateField dp_tl z "[z] +1" VB # diff --git a/target/classes/static/shpTest[Point]/dp_tl.shx b/target/classes/static/shpTest[Point]/dp_tl.shx new file mode 100644 index 0000000..6939a93 Binary files /dev/null and b/target/classes/static/shpTest[Point]/dp_tl.shx differ diff --git a/target/classes/static/shpTest[Polygon]/china_building_part.cpg b/target/classes/static/shpTest[Polygon]/china_building_part.cpg new file mode 100644 index 0000000..3ad133c --- /dev/null +++ b/target/classes/static/shpTest[Polygon]/china_building_part.cpg @@ -0,0 +1 @@ +UTF-8 \ No newline at end of file diff --git a/target/classes/static/shpTest[Polygon]/china_building_part.dbf b/target/classes/static/shpTest[Polygon]/china_building_part.dbf new file mode 100644 index 0000000..3cf70e0 Binary files /dev/null and b/target/classes/static/shpTest[Polygon]/china_building_part.dbf differ diff --git a/target/classes/static/shpTest[Polygon]/china_building_part.prj b/target/classes/static/shpTest[Polygon]/china_building_part.prj new file mode 100644 index 0000000..a30c00a --- /dev/null +++ b/target/classes/static/shpTest[Polygon]/china_building_part.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/target/classes/static/shpTest[Polygon]/china_building_part.qix b/target/classes/static/shpTest[Polygon]/china_building_part.qix new file mode 100644 index 0000000..73f95fc Binary files /dev/null and b/target/classes/static/shpTest[Polygon]/china_building_part.qix differ diff --git a/target/classes/static/shpTest[Polygon]/china_building_part.qpj b/target/classes/static/shpTest[Polygon]/china_building_part.qpj new file mode 100644 index 0000000..5fbc831 --- /dev/null +++ b/target/classes/static/shpTest[Polygon]/china_building_part.qpj @@ -0,0 +1 @@ +GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]] diff --git a/target/classes/static/shpTest[Polygon]/china_building_part.shp b/target/classes/static/shpTest[Polygon]/china_building_part.shp new file mode 100644 index 0000000..82a85c0 Binary files /dev/null and b/target/classes/static/shpTest[Polygon]/china_building_part.shp differ diff --git a/target/classes/static/shpTest[Polygon]/china_building_part.shx b/target/classes/static/shpTest[Polygon]/china_building_part.shx new file mode 100644 index 0000000..d325adc Binary files /dev/null and b/target/classes/static/shpTest[Polygon]/china_building_part.shx differ diff --git a/target/test-classes/com/appleyk/SpringbootshaperApplicationTests.class b/target/test-classes/com/appleyk/SpringbootshaperApplicationTests.class new file mode 100644 index 0000000..cb35175 Binary files /dev/null and b/target/test-classes/com/appleyk/SpringbootshaperApplicationTests.class differ