| 160 | } |
| 161 | |
| 162 | int FLTParseEpsgString(char *pszEpsg, projectionObj *psProj) |
| 163 | { |
| 164 | int nStatus = MS_FALSE; |
| 165 | int nTokens = 0; |
| 166 | char **tokens = NULL; |
| 167 | int nEpsgTmp=0; |
| 168 | size_t bufferSize = 0; |
| 169 | |
| 170 | #ifdef USE_PROJ |
| 171 | if (pszEpsg && psProj) |
| 172 | { |
| 173 | nTokens = 0; |
| 174 | tokens = msStringSplit(pszEpsg,'#', &nTokens); |
| 175 | if (tokens && nTokens == 2) |
| 176 | { |
| 177 | char *szTmp; |
| 178 | bufferSize = 10+strlen(tokens[1])+1; |
| 179 | szTmp = (char *)malloc(bufferSize); |
| 180 | snprintf(szTmp, bufferSize, "init=epsg:%s", tokens[1]); |
| 181 | msInitProjection(psProj); |
| 182 | if (msLoadProjectionString(psProj, szTmp) == 0) |
| 183 | nStatus = MS_TRUE; |
| 184 | free(szTmp); |
| 185 | } |
| 186 | else if (tokens && nTokens == 1) |
| 187 | { |
| 188 | if (tokens) |
| 189 | msFreeCharArray(tokens, nTokens); |
| 190 | nTokens = 0; |
| 191 | |
| 192 | tokens = msStringSplit(pszEpsg,':', &nTokens); |
| 193 | nEpsgTmp = -1; |
| 194 | if (tokens && nTokens == 1) |
| 195 | { |
| 196 | nEpsgTmp = atoi(tokens[0]); |
| 197 | |
| 198 | } |
| 199 | else if (tokens && nTokens == 2) |
| 200 | { |
| 201 | nEpsgTmp = atoi(tokens[1]); |
| 202 | } |
| 203 | if (nEpsgTmp > 0) |
| 204 | { |
| 205 | char szTmp[32]; |
| 206 | snprintf(szTmp, sizeof(szTmp), "init=epsg:%d",nEpsgTmp); |
| 207 | msInitProjection(psProj); |
| 208 | if (msLoadProjectionString(psProj, szTmp) == 0) |
| 209 | nStatus = MS_TRUE; |
| 210 | } |
| 211 | } |
| 212 | if (tokens) |
| 213 | msFreeCharArray(tokens, nTokens); |
| 214 | } |
| 215 | #endif |
| 216 | return nStatus; |
| 217 | } |
| 218 | |
| 219 |
nothing calls this directly
no test coverage detected