Shortest allowed literal: containing cardinal direction > cardinal direction + degree with 3 digits no cardinal direction > degree with 3 digits
The variable "coord_start" stores the position where the coordinates start (0 or 1), so that the script can identify where each literal element begins to validate its content.
The first three characters represent the degrees and they must be numeric.
Decimal degrees are encoded with after the 3rd character with either a dot or a comma. Only one decimal separator is allowed.
Definition at line 115 of file lwgeom_in_marc21.c.
121 if(literal == NULL)
return LW_FALSE;
123 literal_length = strlen(literal);
125 POSTGIS_DEBUGF(2,
"is_literal_valid called (%s)", literal);
127 if (literal_length < 3)
return LW_FALSE;
141 if (literal[0] ==
'N' || literal[0] ==
'E' || literal[0] ==
'S' || literal[0] ==
'W' || literal[0] ==
'+' || literal[0] ==
'-') {
143 if (literal_length < 4) {
144 POSTGIS_DEBUGF(3,
" invalid literal length (%d): \"%s\"", literal_length, literal);
151 for (
int j = coord_start; j < literal_length; j++) {
153 if (!isdigit(literal[j])) {
162 POSTGIS_DEBUGF(3,
" invalid character '%c' at the degrees section: \"%s\"", literal[j], literal);
171 if (literal[j] ==
'.' || literal[j] ==
',') {
175 if (num_dec_sep > 1)
return LW_FALSE;
178 POSTGIS_DEBUGF(3,
" invalid character '%c' in %d: \"%s\"", literal[j], j, literal);
187 POSTGIS_DEBUGF(2,
"=> is_literal_valid returns LW_TRUE for \"%s\"", literal);
#define LW_TRUE
Return types for functions with status returns.
References LW_FALSE, and LW_TRUE.
Referenced by parse_marc21().