Skip to content

Instantly share code, notes, and snippets.

@arbakker
Created December 23, 2022 07:42
Show Gist options
  • Save arbakker/df7183d1d380ed448b93b8e6b1ae8152 to your computer and use it in GitHub Desktop.
Save arbakker/df7183d1d380ed448b93b8e6b1ae8152 to your computer and use it in GitHub Desktop.
Compare WMS/WFS #bash #diff #wms #wfs
#!/usr/bin/env bash
set -uo pipefail
DATASET=${1:-BAG}
GREEN=$'\e[0;32m'
YELLOW=$'\e[0;33m'
NC=$'\e[0m'
function no_diff_message(){
req_type="$1"
suffix="${2:-}"
echo "${GREEN}no difference found in ${req_type} response ${suffix}${NC}"
}
function header_message(){
message="$1"
echo "${YELLOW}${message}${NC}"
}
LEGACY_HOST="http://localhost:32788"
GEODATA_HOST="https://geodata.nationaalgeoregister.nl"
if [[ $DATASET == "BAG" ]];then
geodata_base_url="${GEODATA_HOST}/terugmeldingen/bag/v2"
legacy_base_url="${LEGACY_HOST}/lv/bag/terugmeldingen-legacy"
gfi_query_legacy="SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=bagterugmeldingen&LAYERS=bagterugmeldingen&STYLES=terugmeldingen_style&INFO_FORMAT=application%2Fjson&FEATURE_COUNT=10&I=50&J=50&CRS=EPSG%3A28992&WIDTH=101&HEIGHT=101&BBOX=123712.68233405467%2C449541.4282824537%2C145431.72233400884%2C471260.46828240785"
gfi_query_geodata="SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=bagterugmeldingen&LAYERS=bagterugmeldingen&STYLES=terugmeldingen_style&INFO_FORMAT=application%2Fjson&FEATURE_COUNT=10&I=50&J=50&CRS=EPSG%3A28992&WIDTH=101&HEIGHT=101&BBOX=168252.30219991127%2C480815.43569991156%2C179111.82220008876%2C491674.955700089"
ft_name="bagterugmeldingen:bagterugmeldingen"
layername="bagterugmeldingen"
elif [[ $DATASET == "BRT" ]];then
geodata_base_url="${GEODATA_HOST}/terugmeldingen/brt/v2"
legacy_base_url="${LEGACY_HOST}/brt/terugmeldingen-legacy"
gfi_query_legacy="SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=brtterugmeldingen&LAYERS=brtterugmeldingen&STYLES=terugmeldingen_style&INFO_FORMAT=application%2Fjson&FEATURE_COUNT=10&I=50&J=50&CRS=EPSG%3A28992&WIDTH=101&HEIGHT=101&BBOX=185939.34219991165%2C457537.3556999119%2C207658.3822000884%2C479256.39570008864"
gfi_query_geodata="SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=brtterugmeldingen&LAYERS=brtterugmeldingen&STYLES=terugmeldingen_style&INFO_FORMAT=application%2Fjson&FEATURE_COUNT=10&I=50&J=50&CRS=EPSG%3A28992&WIDTH=101&HEIGHT=101&BBOX=163897.7421998714%2C442161.9956998714%2C207335.8222001287%2C485600.0757001286"
layername="brtterugmeldingen"
ft_name="brtterugmeldingen:brtterugmeldingen"
elif [[ $DATASET == "BGT" ]];then
geodata_base_url="${GEODATA_HOST}/terugmeldingen/bgt/v2"
legacy_base_url="${LEGACY_HOST}/lv/bgt/terugmeldingen-legacy"
gfi_query_legacy="SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=bgtterugmeldingen&LAYERS=bgtterugmeldingen&STYLES=terugmeldingen_style&INFO_FORMAT=application%2Fjson&FEATURE_COUNT=10&I=50&J=50&CRS=EPSG%3A28992&WIDTH=101&HEIGHT=101&BBOX=192336.7822000561%2C462321.9957000561%2C203196.30219994395%2C473181.515699944"
gfi_query_geodata="SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=bgtterugmeldingen&LAYERS=bgtterugmeldingen&STYLES=terugmeldingen_style&INFO_FORMAT=application%2Fjson&FEATURE_COUNT=10&I=50&J=50&CRS=EPSG%3A28992&WIDTH=101&HEIGHT=101&BBOX=176423.82219993114%2C472966.4756999312%2C187283.34220006887%2C483825.99570006895"
layername="bgtterugmeldingen"
ft_name="bgtterugmeldingen:bgtterugmeldingen"
fi
geodata_wms="${geodata_base_url}/wms"
legacy_wms="${legacy_base_url}/wms/v1_0"
geodata_wfs="${geodata_base_url}/wfs"
legacy_wfs="${legacy_base_url}/wfs/v1_0"
header_message "##################################################"
header_message "# checking differences between (WMS) - ${DATASET}:"
header_message "- $geodata_wms"
header_message "- $legacy_wms"
echo ""
cap_query="SERVICE=WMS&REQUEST=GETCAPABILITIES"
geodata_cap_url="${geodata_wms}?${cap_query}"
legacy_cap_url="${legacy_wms}?${cap_query}"
header_message "## checking difference GetCapabilities - ${DATASET}:"
header_message "- $geodata_cap_url"
header_message "- $legacy_cap_url"
echo ""
diff <(curl -s "$geodata_cap_url") <(curl -s "$legacy_cap_url")
if [[ $? -eq 0 ]];then
no_diff_message "Capabilities"
fi
echo ""
getlegend_query="version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=${layername}&format=image/png&STYLE=terugmeldingen_style"
geodata_gl_url="${geodata_wms}?${getlegend_query}"
legacy_gl_url="${legacy_wms}?${getlegend_query}"
header_message "## checking difference GetLegend - ${DATASET}:"
header_message "- $geodata_gl_url"
header_message "- $legacy_gl_url"
echo ""
diff <(curl -s "$geodata_gl_url") <(curl -s "$legacy_gl_url")
if [[ $? -eq 0 ]];then
no_diff_message "GetLegend" "attributes"
fi
echo ""
geodata_gfi_url="${geodata_wms}?${gfi_query_geodata}"
legacy_gfi_url="${legacy_wms}?${gfi_query_legacy}"
header_message "## checking difference GetFeatureInfo - ${DATASET}:"
header_message " - $geodata_gfi_url"
header_message " - $legacy_gfi_url"
echo ""
gfi_response_legacy=$(curl -s "$legacy_gfi_url")
attributen_legacy=$(echo "$gfi_response_legacy" | jq ".features[0].properties | keys")
gfi_response_geodata=$(curl -s "$geodata_gfi_url")
attributen_geodata=$(echo "$gfi_response_geodata" | tr -cd "[:print:]" | jq ".features[0].properties | keys")
diff <(echo "$attributen_geodata") <(echo "$attributen_legacy")
if [[ $? -eq 0 ]];then
no_diff_message "GetFeatureInfo"
fi
echo ""
header_message "##################################################"
header_message "# checking differences between (WFS) - ${DATASET}:"
header_message "- $geodata_wfs"
header_message "- $legacy_wfs"
echo ""
cap_query="SERVICE=WFS&REQUEST=GETCAPABILITIES"
geodata_cap_url="${geodata_wfs}?${cap_query}"
legacy_cap_url="${legacy_wfs}?${cap_query}"
header_message "## checking difference GetCapabilities - ${DATASET}:"
header_message "- $geodata_cap_url"
header_message "- $legacy_cap_url"
echo ""
diff <(curl -s "$geodata_cap_url") <(curl -s "$legacy_cap_url")
if [[ $? -eq 0 ]];then
no_diff_message "GetCapabilities"
fi
echo ""
dft_query="request=DescribeFeatureType&service=WFS&version=2.0.0&typename=${ft_name}"
geodata_dft_url="${geodata_wfs}?${dft_query}"
legacy_dft_url="${legacy_wfs}?${dft_query}"
header_message "## checking difference DescribeFeatureType - ${DATASET}"
header_message "- $geodata_dft_url"
header_message "- $legacy_dft_url"
echo ""
diff <(curl -s "$geodata_dft_url") <(curl -s "$legacy_dft_url")
if [[ $? -eq 0 ]];then
no_diff_message "DescribeFeatureType"
fi
echo ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment