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 114 of file lwgeom_in_marc21.c.
120 if(literal == NULL)
return LW_FALSE;
122 literal_length = strlen(literal);
124 POSTGIS_DEBUGF(2,
"is_literal_valid called (%s)", literal);
126 if (literal_length < 3)
return LW_FALSE;
140 if (literal[0] ==
'N' || literal[0] ==
'E' || literal[0] ==
'S' || literal[0] ==
'W' || literal[0] ==
'+' || literal[0] ==
'-') {
142 if (literal_length < 4) {
143 POSTGIS_DEBUGF(3,
" invalid literal length (%d): \"%s\"", literal_length, literal);
150 for (
int j = coord_start; j < literal_length; j++) {
152 if (!isdigit(literal[j])) {
161 POSTGIS_DEBUGF(3,
" invalid character '%c' at the degrees section: \"%s\"", literal[j], literal);
170 if (literal[j] ==
'.' || literal[j] ==
',') {
174 if (num_dec_sep > 1)
return LW_FALSE;
177 POSTGIS_DEBUGF(3,
" invalid character '%c' in %d: \"%s\"", literal[j], j, literal);
186 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().