MCPcopy Index your code
hub / github.com/MapServer/MapServer / FLTGetShape

Function FLTGetShape

mapogcfilter.c:1796–1876  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1794}
1795
1796shapeObj *FLTGetShape(FilterEncodingNode *psFilterNode, double *pdfDistance,
1797 int *pnUnit)
1798{
1799 char **tokens = NULL;
1800 int nTokens = 0;
1801 FilterEncodingNode *psNode = psFilterNode;
1802 char *szUnitStr = NULL;
1803 char *szUnit = NULL;
1804
1805 if (psNode)
1806 {
1807 if (psNode->eType == FILTER_NODE_TYPE_SPATIAL && psNode->psRightNode)
1808 psNode = psNode->psRightNode;
1809
1810 if (psNode->eType == FILTER_NODE_TYPE_GEOMETRY_POINT ||
1811 psNode->eType == FILTER_NODE_TYPE_GEOMETRY_LINE ||
1812 psNode->eType == FILTER_NODE_TYPE_GEOMETRY_POLYGON)
1813 {
1814
1815 if (psNode->pszValue && pdfDistance)
1816 {
1817 /*
1818 sytnax expected is "distance;unit" or just "distance"
1819 if unit is there syntax is "URI#unit" (eg http://..../#m)
1820 or just "unit"
1821 */
1822 tokens = msStringSplit(psNode->pszValue,';', &nTokens);
1823 if (tokens && nTokens >= 1)
1824 {
1825 *pdfDistance = atof(tokens[0]);
1826
1827 if (nTokens == 2 && pnUnit)
1828 {
1829 szUnitStr = msStrdup(tokens[1]);
1830 msFreeCharArray(tokens, nTokens);
1831 nTokens = 0;
1832 tokens = msStringSplit(szUnitStr,'#', &nTokens);
1833 msFree(szUnitStr);
1834 if (tokens && nTokens >= 1)
1835 {
1836 if (nTokens ==1)
1837 szUnit = tokens[0];
1838 else
1839 szUnit = tokens[1];
1840
1841 if (strcasecmp(szUnit,"m") == 0 ||
1842 strcasecmp(szUnit,"meters") == 0 )
1843 *pnUnit = MS_METERS;
1844 else if (strcasecmp(szUnit,"km") == 0 ||
1845 strcasecmp(szUnit,"kilometers") == 0)
1846 *pnUnit = MS_KILOMETERS;
1847 else if (strcasecmp(szUnit,"NM") == 0 ||
1848 strcasecmp(szUnit,"nauticalmiles") == 0)
1849 *pnUnit = MS_NAUTICALMILES;
1850 else if (strcasecmp(szUnit,"mi") == 0 ||
1851 strcasecmp(szUnit,"miles") == 0)
1852 *pnUnit = MS_MILES;
1853 else if (strcasecmp(szUnit,"in") == 0 ||

Calls 5

msStringSplitFunction · 0.85
msStrdupFunction · 0.85
msFreeCharArrayFunction · 0.85
msFreeFunction · 0.85
strcasecmpFunction · 0.85

Tested by

no test coverage detected