Improve our regression testing facility.

Next parallelism improvements will allow pgloader to use more than one
COPY thread to load data, with the impact of changing the order of rows
in the database.

Rather than doing a copy out and `diff` of the data just loaded, load
the reference data and do the diff in SQL:

          select * from loaded.data
  except
          select * from expected.data

If such a query returns any row, we know we didn't load what was
expected and the regression test is failing.

This regression testing facility should also allow us to finally add
support for multiple-table regression tests (sqlite, mysql, etc).
This commit is contained in:
Dimitri Fontaine 2015-11-17 17:03:08 +01:00
parent 6ca376ef9b
commit 150d288d7a
9 changed files with 645 additions and 53 deletions

View File

@ -9,6 +9,9 @@
;;; :cl+ssl in its system definition. ;;; :cl+ssl in its system definition.
;;; ;;;
;; So that we can #+pgloader-image some code away, see main.lisp
(push :pgloader-image *features*)
(in-package #:cl-user) (in-package #:cl-user)
(defun close-foreign-libs () (defun close-foreign-libs ()

View File

@ -7,6 +7,7 @@
(defparameter +os-code-error+ 1) (defparameter +os-code-error+ 1)
(defparameter +os-code-error-usage+ 2) (defparameter +os-code-error-usage+ 2)
(defparameter +os-code-error-bad-source+ 4) (defparameter +os-code-error-bad-source+ 4)
(defparameter +os-code-error-regress+ 5)
;;; ;;;
;;; Now some tooling ;;; Now some tooling
@ -81,7 +82,10 @@
:documentation "SQL script to run after loading the data") :documentation "SQL script to run after loading the data")
("self-upgrade" :type string :optional t ("self-upgrade" :type string :optional t
:documentation "Path to pgloader newer sources"))) :documentation "Path to pgloader newer sources")
("regress" :type boolean :optional t
:documentation "Drive regression testing")))
(defun print-backtrace (condition debug stream) (defun print-backtrace (condition debug stream)
"Depending on DEBUG, print out the full backtrace or just a shorter "Depending on DEBUG, print out the full backtrace or just a shorter
@ -195,7 +199,8 @@
((:load-lisp-file load)) ((:load-lisp-file load))
client-min-messages log-min-messages summary client-min-messages log-min-messages summary
root-dir self-upgrade root-dir self-upgrade
with set field cast type encoding before after) with set field cast type encoding before after
regress)
options options
;; parse the log thresholds ;; parse the log thresholds
@ -300,18 +305,26 @@
(log-message :fatal "We have a situation here.") (log-message :fatal "We have a situation here.")
(print-backtrace condition debug *standard-output*)))) (print-backtrace condition debug *standard-output*))))
(if (= 2 (length arguments)) (cond
;; if there are exactly two arguments in the command ((and regress (= 1 (length arguments)))
;; line, try and process them as source and target ;; run a regression test
;; arguments (process-regression-test (first arguments)))
(process-source-and-target (first arguments)
(second arguments)
type encoding
set with field cast
before after)
;; process the files (regress
(mapcar #'process-command-file arguments))) (log-message :fatal "Regression testing requires a single .load file as input."))
((= 2 (length arguments))
;; if there are exactly two arguments in the command
;; line, try and process them as source and target
;; arguments
(process-source-and-target (first arguments)
(second arguments)
type encoding
set with field cast
before after))
(t
;; process the files
(mapcar #'process-command-file arguments))))
(source-definition-error (c) (source-definition-error (c)
(log-message :fatal "~a" c) (log-message :fatal "~a" c)
@ -324,13 +337,16 @@
;; done. ;; done.
(uiop:quit +os-code-success+))))) (uiop:quit +os-code-success+)))))
;;;
;;; Helper functions to actually do things
;;;
(defun process-command-file (filename) (defun process-command-file (filename)
"Process FILENAME as a pgloader command file (.load)." "Process FILENAME as a pgloader command file (.load)."
(let ((truename (probe-file filename))) (let ((truename (probe-file filename)))
(if truename (if truename
(run-commands truename :start-logger nil) (run-commands truename :start-logger nil)
(log-message :error "Can not find file: ~s" filename))) (log-message :error "Can not find file: ~s" filename))))
(format t "~&"))
(defun process-source-and-target (source target (defun process-source-and-target (source target
type encoding set with field cast type encoding set with field cast
@ -341,7 +357,7 @@
(parse-source-string-for-type type source) (parse-source-string-for-type type source)
(parse-source-string source))) (parse-source-string source)))
(type (when source (type (when source
(parse-cli-type (conn-type source)))) (parse-cli-type (conn-type source-uri))))
(target-uri (parse-target-string target))) (target-uri (parse-target-string target)))
;; some verbosity about the parsing "magic" ;; some verbosity about the parsing "magic"
@ -378,6 +394,101 @@
:after (parse-sql-file after) :after (parse-sql-file after)
:start-logger nil)))) :start-logger nil))))
(defun process-regression-test (load-file &key start-logger)
"Run a regression test for given LOAD-FILE."
(unless (probe-file load-file)
(format t "Regression testing ~s: file does not exists." load-file)
(uiop:quit +os-code-error-regress+))
;; now do our work
(with-monitor (:start-logger start-logger)
(log-message :log "Regression testing: ~s" load-file)
(process-command-file load-file)
;; once we are done running the load-file, compare the loaded data with
;; our expected data file
(let* ((expected-subdir (directory-namestring
(asdf:system-relative-pathname
:pgloader "test/regress/expected/")))
(expected-data-file (make-pathname :defaults load-file
:type "out"
:directory expected-subdir)))
(destructuring-bind (target *pg-settings*)
(parse-target-pg-db-uri load-file)
(log-message :log "Comparing loaded data against ~s"
expected-data-file)
(let ((expected-data-source
(parse-source-string-for-type
:copy (uiop:native-namestring expected-data-file)))
;; change target table-name schema
(expected-data-target
(let ((e-d-t (clone-connection target)))
(setf (pgconn-table-name e-d-t)
(cons "expected"
(typecase (pgconn-table-name e-d-t)
(string (pgconn-table-name e-d-t))
(cons (cdr (pgconn-table-name e-d-t))))))
e-d-t)))
;; prepare expected table in "expected" schema
(with-pgsql-connection (target)
(with-schema (unqualified-table-name (pgconn-table-name target))
(let ((drop (format nil "drop table if exists expected.~a;"
unqualified-table-name))
(create (format nil "create table expected.~a(like ~a);"
unqualified-table-name unqualified-table-name)))
(log-message :notice "~a" drop)
(pomo:query drop)
(log-message :notice "~a" create)
(pomo:query create))))
;; load expected data
(load-data :from expected-data-source
:into expected-data-target
:options '(:truncate t)
:start-logger nil))
;; now compare both
(with-pgsql-connection (target)
(with-schema (unqualified-table-name (pgconn-table-name target))
(let* ((cols (loop :for (name type)
:in (list-columns-query unqualified-table-name)
;;
;; We can't just use table names here, because
;; PostgreSQL support for the POINT datatype fails
;; to implement EXCEPT support, and the query then
;; fails with:
;;
;; could not identify an equality operator for type point
;;
:collect (if (string= "point" type)
(format nil "~s::text" name)
(format nil "~s" name))))
(sql (format nil
"select count(*) from (select ~{~a~^, ~} from ~a except select ~{~a~^, ~} from expected.~a) ss"
cols
unqualified-table-name
cols
unqualified-table-name))
(diff-count (pomo:query sql :single)))
(log-message :notice "~a" sql)
(log-message :notice "Got a diff of ~a rows" diff-count)
(if (= 0 diff-count)
(progn
(log-message :log "Regress pass.")
#-pgloader-image (values diff-count +os-code-success+)
#+pgloader-image (uiop:quit +os-code-success+))
(progn
(log-message :log "Regress fail.")
#-pgloader-image (values diff-count +os-code-error-regress+)
#+pgloader-image (uiop:quit +os-code-error-regress+))))))))))
;;;
;;; Helper function to run a given command
;;;
(defun run-commands (source (defun run-commands (source
&key &key
(start-logger t) (start-logger t)

View File

@ -194,6 +194,7 @@
#:copy-from-queue #:copy-from-queue
#:list-databases #:list-databases
#:list-tables #:list-tables
#:list-columns-query
#:list-columns #:list-columns
#:list-indexes #:list-indexes
#:list-tables-cols #:list-tables-cols
@ -573,6 +574,7 @@
#:parse-cli-fields #:parse-cli-fields
#:parse-cli-casts #:parse-cli-casts
#:parse-sql-file #:parse-sql-file
#:parse-target-pg-db-uri
;; connection types / classes symbols for use in main ;; connection types / classes symbols for use in main
#:connection #:connection
@ -602,15 +604,18 @@
;; ;;
(defpackage #:pgloader (defpackage #:pgloader
(:use #:cl (:use #:cl
#:pgloader.params #:pgloader.utils #:pgloader.parser) #:pgloader.params #:pgloader.utils #:pgloader.parser
#:pgloader.connection)
(:import-from #:pgloader.pgsql (:import-from #:pgloader.pgsql
#:pgconn-table-name #:pgconn-table-name
#:pgsql-connection #:pgsql-connection
#:copy-from-file #:copy-from-file
#:list-databases #:list-databases
#:list-tables) #:list-tables
(:import-from #:pgloader.connection #:list-columns-query)
#:connection-error) (:import-from #:pgloader.pgsql
#:with-pgsql-connection
#:with-schema)
(:export #:*version-string* (:export #:*version-string*
#:*state* #:*state*
#:*fd-path-root* #:*fd-path-root*

View File

@ -270,3 +270,44 @@
(when filename (when filename
(log-message :notice "reading SQL queries from ~s" filename) (log-message :notice "reading SQL queries from ~s" filename)
(pgloader.sql:read-queries (probe-file filename)))) (pgloader.sql:read-queries (probe-file filename))))
;;;
;;; Helper for regression testing
;;;
(defrule pg-db-uri-from-command (or pg-db-uri-from-files
pg-db-uri-from-source-target
pg-db-uri-from-source-and-encoding))
(defrule pg-db-uri-from-files (or load-csv-file-command
load-copy-file-command
load-fixed-cols-file-command)
(:lambda (command)
(destructuring-bind (source encoding fields pg-db-uri columns
&key gucs &allow-other-keys)
command
(declare (ignore source encoding fields columns))
(list pg-db-uri gucs))))
(defrule pg-db-uri-from-source-target (or load-ixf-command
load-sqlite-command
load-mysql-command
load-mssql-command)
(:lambda (command)
(destructuring-bind (source pg-db-uri &key gucs &allow-other-keys)
command
(declare (ignore source))
(list pg-db-uri gucs))))
(defrule pg-db-uri-from-source-and-encoding (or load-dbf-command)
(:lambda (command)
(destructuring-bind (source encoding pg-db-uri &key gucs &allow-other-keys)
command
(declare (ignore source encoding))
(list pg-db-uri gucs))))
(defun parse-target-pg-db-uri (command-file)
"Partially parse COMMAND-FILE and return its target connection string."
(let* ((content (read-file-into-string command-file)))
(parse 'pg-db-uri-from-command content :junk-allowed t)))

View File

@ -248,18 +248,25 @@
group by relname;" schema schema)) group by relname;" schema schema))
collect (cons relname (sq:split-sequence #\, fkeys)))) collect (cons relname (sq:split-sequence #\, fkeys))))
(defun list-columns (pgconn table-name &key schema) (defun list-columns-query (table-name &optional schema)
"Return a list of column names for given TABLE-NAME." "Returns the list of columns for table TABLE-NAME in schema SCHEMA, and
(with-pgsql-transaction (:pgconn pgconn) must be run with an already established PostgreSQL connection."
(with-schema (unqualified-table-name table-name) (pomo:query (format nil "
(pomo:query (format nil " select attname, t.oid::regtype
select attname
from pg_class c from pg_class c
join pg_namespace n on n.oid = c.relnamespace join pg_namespace n on n.oid = c.relnamespace
left join pg_attribute a on c.oid = a.attrelid left join pg_attribute a on c.oid = a.attrelid
join pg_type t on t.oid = a.atttypid join pg_type t on t.oid = a.atttypid
where c.oid = '~:[~*~a~;~a.~a~]'::regclass and attnum > 0 where c.oid = '~:[~*~a~;~a.~a~]'::regclass and attnum > 0
order by attnum" schema schema unqualified-table-name) :column)))) order by attnum" schema schema table-name)))
(defun list-columns (pgconn table-name &key schema)
"Return a list of column names for given TABLE-NAME."
(with-pgsql-transaction (:pgconn pgconn)
(with-schema (unqualified-table-name table-name)
(loop :for (name type)
:in (list-columns-query unqualified-table-name schema)
:collect name))))
(defun list-indexes (table-name) (defun list-indexes (table-name)
"List all indexes for TABLE-NAME in SCHEMA. A PostgreSQL connection must "List all indexes for TABLE-NAME in SCHEMA. A PostgreSQL connection must

View File

@ -52,6 +52,7 @@ prepare: bossa.sql sakila
-createdb -U postgres -O `whoami` pgloader -createdb -U postgres -O `whoami` pgloader
-createdb -U postgres -O `whoami` stocks -createdb -U postgres -O `whoami` stocks
-createdb -U postgres -O `whoami` ip4r -createdb -U postgres -O `whoami` ip4r
-psql -d pgloader -c 'create schema expected'
-psql -U postgres -d pgloader -c 'create extension ip4r' -psql -U postgres -d pgloader -c 'create extension ip4r'
-psql -U postgres -d ip4r -c 'create extension ip4r' -psql -U postgres -d ip4r -c 'create extension ip4r'
-psql -d stocks -f bossa.sql -psql -d stocks -f bossa.sql
@ -93,4 +94,6 @@ csv-districts-stdin.out: csv-districts-stdin.load
# Regression tests # Regression tests
regress/out/%.out: %.load regress/out/%.out: %.load
./regress.sh $(PGLOADER) $< #./regress.sh $(PGLOADER) $<
$(PGLOADER) --regress $<
touch $@

View File

@ -1,25 +0,0 @@
#! /bin/bash
# regress test driver
# - run pgloader on the given .load command file
# - parse the PostgreSQL connection string and target table
# - output a CSV for the target table
# - diff the CSV and error if diffs found
set -x
# run the tests in the Europe/Paris TimeZone
# see csv-parse-date.load for an example where that matters
export PGTZ='Europe/Paris'
pgloader=$1
command=$2
targetdb=`gawk -F '[ ?]+' '/^ *INTO|into/ {print $3}' < $command`
table=`gawk -F '[ ?]+' '/^ *INTO|into/ {print $4}' < $command`
expected=regress/expected/`basename $2 .load`.out
out=regress/out/`basename $2 .load`.out
$pgloader $command
psql -c "copy $table to stdout" -d "$targetdb" > $out
diff -c $expected $out

View File

@ -0,0 +1,440 @@
AL 0101 15713029743 2275875249 6066.835 878.72 (-87.797812,31.008681)
AL 0102 26266710862 307026133 10141.634 118.543 (-86.076842,31.702085)
AL 0103 19538510390 470857739 7543.861 181.799 (-85.700228,33.150564)
AL 0104 23021812410 570326274 8888.772 220.204 (-87.21381,34.118181)
AL 0105 9524193916 464832293 3677.312 179.473 (-86.711133,34.754994)
AL 0106 10802277539 177285050 4170.783 68.45 (-86.713586,33.260169)
AL 0107 26304252226 330354794 10156.129 127.551 (-87.640501,32.449235)
AK 0200 1477953211577 245383480336 570640.95 94743.095 (-152.837068,63.346191)
AZ 0401 142551925981 354331446 55039.609 136.808 (-110.725925,34.971013)
AZ 0402 20300641939 138440464 7838.122 53.452 (-109.938623,31.916381)
AZ 0403 40633780882 7975749 15688.791 3.079 (-112.402591,32.423815)
AZ 0404 85986180794 503998731 33199.451 194.595 (-113.204528,34.590918)
AZ 0405 760071785 2341831 293.465 0.904 (-111.712018,33.339408)
AZ 0406 1618922007 10595597 625.069 4.091 (-111.8886,33.666924)
AZ 0407 531256766 1029634 205.119 0.398 (-112.118768,33.427819)
AZ 0408 1397724867 3977037 539.665 1.536 (-112.299574,33.695581)
AZ 0409 426809393 3505775 164.792 1.354 (-111.949996,33.406007)
AR 0501 50034129489 1236108020 19318.286 477.264 (-91.258311,35.293906)
AR 0502 12893274981 304933198 4978.122 117.735 (-92.379511,35.099565)
AR 0503 13988496159 370324756 5400.989 142.983 (-94.062449,36.138288)
AR 0504 57855360779 1049173283 22338.081 405.088 (-93.204357,34.219575)
CA 0601 72751398285 1942443053 28089.473 749.981 (-121.510516,40.731988)
CA 0602 33546129203 4122734693 12952.233 1591.797 (-123.464974,40.094059)
CA 0603 16015413571 456758554 6183.586 176.355 (-122.089573,39.031952)
CA 0604 33245611346 860270157 12836.203 332.152 (-119.927973,37.982452)
CA 0605 4482806702 319348919 1730.821 123.301 (-122.462559,38.515806)
CA 0606 453343222 11310562 175.037 4.367 (-121.479768,38.594033)
CA 0607 1421004009 13630114 548.653 5.263 (-121.218063,38.475807)
CA 0608 85125679251 450497694 32867.21 173.938 (-116.819546,35.662557)
CA 0609 3225260765 154740362 1245.28 59.746 (-121.307147,38.010873)
CA 0610 4710656290 59125011 1818.795 22.828 (-121.054083,37.586366)
CA 0611 1278436142 92042761 493.607 35.538 (-122.000938,37.903876)
CA 0612 100944525 211635239 38.975 81.713 (-122.434,37.785514)
CA 0613 250689062 127237243 96.792 49.127 (-122.239248,37.778962)
CA 0614 672112621 827706961 259.504 319.579 (-122.494794,37.574673)
CA 0615 1552565000 69774947 599.449 26.94 (-121.83503,37.655654)
CA 0616 7354292902 118605996 2839.508 45.794 (-120.521745,37.109453)
CA 0617 478762287 23128468 184.851 8.93 (-121.967348,37.44403)
CA 0618 1802952932 329912139 696.124 127.38 (-122.153712,37.202132)
CA 0619 2370728152 16862460 915.343 6.511 (-121.550377,37.213101)
CA 0620 12624160163 1574878260 4874.216 608.064 (-121.275218,36.373286)
CA 0621 17430467786 36044725 6729.942 13.917 (-119.8515,36.086714)
CA 0622 3017651739 9893593 1165.122 3.82 (-119.389551,36.476861)
CA 0623 25635706519 100710037 9898.002 38.884 (-118.538728,35.611137)
CA 0624 17827786838 3689073827 6883.347 1424.359 (-120.112845,34.919637)
CA 0625 4378380469 30999372 1690.502 11.969 (-118.280269,34.58806)
CA 0626 2432309944 807128892 939.12 311.634 (-119.129955,34.167023)
CA 0627 1812743095 7619828 699.904 2.942 (-117.934887,34.265083)
CA 0628 565785361 2428560 218.451 0.938 (-118.291452,34.250058)
CA 0629 238358439 1621937 92.031 0.626 (-118.430313,34.266695)
CA 0630 352095777 5010878 135.945 1.935 (-118.546956,34.201873)
CA 0631 565237169 6461923 218.239 2.495 (-117.353328,34.11001)
CA 0632 321763020 5330492 124.233 2.058 (-117.913968,34.089458)
CA 0633 747426395 489674589 288.583 189.064 (-118.783251,34.046991)
CA 0634 123448887 784487 47.664 0.303 (-118.228269,34.074655)
CA 0635 437398432 324076 168.88 0.125 (-117.588323,34.045401)
CA 0636 15313666065 201989395 5912.64 77.989 (-115.742704,33.726592)
CA 0637 143131680 352963 55.263 0.136 (-118.368705,34.016123)
CA 0638 262778856 3823600 101.459 1.476 (-118.062629,33.940424)
CA 0639 529385331 3099912 204.397 1.197 (-117.834936,33.940378)
CA 0640 149407450 1743127 57.687 0.673 (-118.179207,33.969867)
CA 0641 819834652 4289703 316.54 1.656 (-117.308367,33.917866)
CA 0642 2424112525 44726428 935.955 17.269 (-117.229697,33.675043)
CA 0643 186560131 556706 72.031 0.215 (-118.336303,33.90311)
CA 0644 205539401 66883476 79.359 25.824 (-118.250983,33.81875)
CA 0645 855697061 5439763 330.386 2.1 (-117.668355,33.714258)
CA 0646 185747870 2426355 71.718 0.937 (-117.896363,33.790804)
CA 0647 559987484 1176316015 216.212 454.178 (-118.481043,33.367642)
CA 0648 376771056 283257821 145.472 109.366 (-117.905765,33.619495)
CA 0649 1432472469 512443592 553.081 197.856 (-117.379519,33.314786)
CA 0650 7219212004 43680830 2787.353 16.865 (-116.62259,33.113548)
CA 0651 12410219319 870626200 4791.613 336.151 (-115.525428,32.996239)
CA 0652 691525160 296862469 266.999 114.619 (-117.16536,32.85722)
CA 0653 350755245 6841556 135.427 2.642 (-117.031482,32.718314)
CO 0801 491113531 7020454 189.62 2.711 (-104.908758,39.732286)
CO 0802 19516433217 236253799 7535.337 91.218 (-105.744525,40.148079)
CO 0803 128804681992 383113933 49731.768 147.921 (-107.344849,38.743254)
CO 0804 98685461119 435569651 38102.671 168.174 (-103.413853,39.070683)
CO 0805 18818131553 61272042 7265.722 23.657 (-105.344151,38.815408)
CO 0806 1229372655 21688714 474.663 8.374 (-104.765351,39.755088)
CO 0807 886052359 25182665 342.107 9.723 (-105.042224,39.826149)
CT 0901 1749407257 51391936 675.45 19.843 (-73.017382,41.928463)
CT 0902 5148068905 298389212 1987.681 115.209 (-72.206509,41.653687)
CT 0903 1218176271 68591531 470.341 26.483 (-72.877381,41.385372)
CT 0904 1193274765 214553278 460.726 82.839 (-73.388514,41.196801)
CT 0905 3232714229 87476227 1248.158 33.775 (-73.21,41.694322)
CT 09ZZ 0 1095332714 0 422.91 (-72.842465,41.166607)
DE 1000 5046703785 1399060967 1948.543 540.18 (-75.447374,38.99355)
DC 1198 158114680 18884970 61.048 7.292 (-77.017094,38.904149)
FL 1201 10402178447 1923043766 4016.304 742.491 (-86.662466,30.662801)
FL 1202 22309078732 3786903939 8613.584 1462.132 (-84.730377,30.282709)
FL 1203 18922591173 1445174513 7306.054 557.985 (-82.735829,29.834624)
FL 1204 4858743971 588503435 1875.972 227.222 (-81.864272,30.426253)
FL 1205 3509514123 468166484 1355.031 180.76 (-81.751207,29.385204)
FL 1206 6492896200 1790090697 2506.921 691.158 (-81.351825,29.457632)
FL 1207 1330172200 167486249 513.582 64.667 (-81.21962,28.725709)
FL 1208 4537808160 1709286501 1752.058 659.959 (-80.698906,28.164649)
FL 1209 4422372407 520360046 1707.488 200.912 (-81.201653,28.13181)
FL 1210 2924927656 699821949 1129.321 270.203 (-81.741187,28.516018)
FL 1211 6500565323 1038113708 2509.882 400.818 (-82.241472,28.858609)
FL 1212 2288903065 477810429 883.75 184.484 (-82.491659,28.268665)
FL 1213 481812230 600746135 186.029 231.949 (-82.748405,27.866185)
FL 1214 687377834 666135808 265.398 257.196 (-82.512718,27.833618)
FL 1215 2119941760 145692198 818.514 56.252 (-82.082016,28.041384)
FL 1216 2267097987 823911676 875.331 318.114 (-82.426202,27.306261)
FL 1217 16498147737 1870651518 6369.971 722.263 (-81.548295,27.317474)
FL 1218 3917477078 979524311 1512.546 378.196 (-80.3795,27.138361)
FL 1219 1943452045 1597292115 750.371 616.718 (-81.906739,26.431616)
FL 1220 6286990870 700997654 2427.421 270.657 (-80.677096,26.508924)
FL 1221 675910263 8694946 260.97 3.357 (-80.211301,26.468693)
FL 1222 447752336 483662936 172.878 186.743 (-80.077788,26.403288)
FL 1223 437963002 296029109 169.098 114.297 (-80.346007,26.073605)
FL 1224 274750139 36938006 106.082 14.262 (-80.219126,25.907101)
FL 1225 8372667635 388270701 3232.705 149.912 (-81.066902,26.094964)
FL 1226 5435496605 7255313105 2098.657 2801.292 (-81.027707,25.142631)
FL 1227 540892618 955546269 208.84 368.938 (-80.30606,25.572782)
GA 1301 20675388766 2454073678 7982.813 947.523 (-81.942545,31.317438)
GA 1302 24931828118 449814025 9626.233 173.674 (-84.418534,31.815153)
GA 1303 9941062730 209988166 3838.266 81.077 (-84.728664,33.150522)
GA 1304 1286193914 23051544 496.602 8.9 (-84.050563,33.6996)
GA 1305 686100850 5127435 264.905 1.98 (-84.401119,33.706985)
GA 1306 773785099 14270149 298.76 5.51 (-84.34568,34.013047)
GA 1307 1016855087 25787778 392.61 9.957 (-84.083307,34.039896)
GA 1308 22563044577 368163842 8711.641 142.149 (-83.451511,31.779807)
GA 1309 13495927062 413225039 5210.807 159.547 (-83.686869,34.506204)
GA 1310 18379116726 465170518 7096.217 179.603 (-83.062309,33.424206)
GA 1311 2774513523 69161482 1071.246 26.703 (-84.651663,34.180774)
GA 1312 21199762274 377544219 8185.274 145.771 (-82.223842,32.413331)
GA 1313 1851719039 24015899 714.953 9.273 (-84.568775,33.629827)
GA 1314 9383938838 51803141 3623.159 20.001 (-85.097876,34.430586)
HI 1501 541889636 456255417 209.225 176.161 (-157.905954,21.32264)
HI 1502 16092640339 11222239041 6213.403 4332.931 (-155.506103,19.809767)
ID 1601 102092199029 1316278062 39418.02 508.218 (-116.035842,45.29675)
ID 1602 111952481828 1081609742 43225.097 417.612 (-113.364275,43.443944)
IL 1701 669207822 2206772 258.383 0.852 (-87.835823,41.545009)
IL 1702 2798919381 25525663 1080.669 9.856 (-87.790115,41.256208)
IL 1703 614291834 12618806 237.179 4.872 (-87.891975,41.678983)
IL 1704 135856892 893768 52.455 0.345 (-87.710024,41.831869)
IL 1705 247878648 1644611 95.706 0.635 (-87.830902,41.930366)
IL 1706 981039886 27469346 378.782 10.606 (-88.219878,42.175102)
IL 1707 161917640 4788468 62.517 1.849 (-87.732122,41.863332)
IL 1708 532281931 10784395 205.515 4.164 (-88.096644,42.009666)
IL 1709 272854529 1533501 105.35 0.592 (-87.810185,42.052684)
IL 1710 776432948 31761118 299.782 12.263 (-87.939165,42.279747)
IL 1711 727650482 14262813 280.947 5.507 (-88.145949,41.642798)
IL 1712 12971192426 462819950 5008.206 178.696 (-89.431982,37.995165)
IL 1713 15005475516 215893456 5793.647 83.357 (-89.519842,39.515635)
IL 1714 4137752896 62514547 1597.595 24.137 (-88.445853,42.025547)
IL 1715 38061612586 354174327 14695.671 136.747 (-88.44213,38.905179)
IL 1716 20506197986 180830460 7917.488 69.819 (-88.799536,41.39129)
IL 1717 17956599913 338574734 6933.082 130.724 (-90.218653,41.389467)
IL 1718 27236198147 382488202 10515.955 147.68 (-90.069118,40.227184)
IL 17ZZ 922 4071253143 0 1571.92 (-87.56635,41.773669)
IN 1801 2996678108 624542894 1157.024 241.137 (-87.179817,41.497034)
IN 1802 10252664272 132253412 3958.576 51.063 (-86.236798,41.248724)
IN 1803 10827116608 134942415 4180.373 52.102 (-85.236178,41.096554)
IN 1804 16453018354 67934729 6352.546 26.23 (-86.859412,40.381088)
IN 1805 4985110792 41087258 1924.762 15.864 (-85.869599,40.248632)
IN 1806 16075623584 106632747 6206.833 41.171 (-85.376338,39.475219)
IN 1807 786951061 4925575 303.844 1.902 (-86.139006,39.746873)
IN 1808 18791362705 278683891 7255.386 107.6 (-87.199347,38.733017)
IN 1809 11620668174 146001270 4486.765 56.371 (-86.212801,38.782916)
IA 1901 31206341466 228952740 12048.836 88.399 (-91.896123,42.52776)
IA 1902 31758230355 431616385 12261.922 166.648 (-92.149188,41.208515)
IA 1903 22765022994 153189312 8789.625 59.147 (-94.640381,41.209543)
IA 1904 58939702042 262836568 22756.747 101.482 (-94.645098,42.628638)
KS 2001 136084441189 594393752 52542.499 229.497 (-99.408037,38.731595)
KS 2002 36631073122 530177718 14143.337 204.703 (-95.42464,38.482278)
KS 2003 1961140628 33428752 757.201 12.907 (-94.790643,38.895004)
KS 2004 37077440974 187868708 14315.681 72.537 (-97.743983,37.554465)
KY 2101 31285765773 1225954220 12079.502 473.344 (-87.184938,37.084603)
KY 2102 18589493191 406378127 7177.444 156.903 (-85.99049,37.544621)
KY 2103 827083185 41659117 319.339 16.085 (-85.697271,38.189221)
KY 2104 11349809229 282363806 4382.186 109.021 (-84.427823,38.565851)
KY 2105 29098900619 310242468 11235.149 119.785 (-83.521892,37.368826)
KY 2106 11118089644 119971954 4292.719 46.321 (-84.154778,38.053447)
LA 2201 10438247138 14500220172 4030.23 5598.567 (-89.892754,29.666395)
LA 2202 3285343135 522425050 1268.478 201.709 (-90.568499,30.046744)
LA 2203 18086703449 5596018883 6983.316 2160.635 (-92.430431,29.951122)
LA 2204 32206765985 1110605520 12435.102 428.807 (-93.179606,31.792047)
LA 2205 37432796821 1115646195 14452.884 430.753 (-91.823524,31.766446)
LA 2206 10447737924 916227446 4033.894 353.757 (-91.024897,30.297575)
ME 2301 8509451103 4736333810 3285.518 1828.709 (-69.940879,43.830407)
ME 2302 71373349577 7013978995 27557.406 2708.113 (-69.055935,45.484863)
MD 2401 10300530308 4035490288 3977.057 1558.112 (-75.964655,38.766717)
MD 2402 903582251 440572281 348.875 170.106 (-76.428419,39.339547)
MD 2403 787706742 253118872 304.135 97.73 (-76.676863,39.157221)
MD 2404 771314809 48322758 297.806 18.658 (-76.592616,39.05649)
MD 2405 3836384243 2070203372 1481.236 799.31 (-76.711406,38.472175)
MD 2406 5051143945 102104250 1950.258 39.423 (-78.884335,39.537614)
MD 2407 1263983037 15278107 488.027 5.899 (-76.995743,39.288557)
MD 2408 2226993046 24489657 859.847 9.456 (-77.241743,39.422281)
MA 2501 6087221390 129463171 2350.289 49.986 (-72.864168,42.331036)
MA 2502 4216494570 221736235 1627.998 85.613 (-72.118691,42.385042)
MA 2503 1962836070 75942321 757.855 29.321 (-71.572828,42.589515)
MA 2504 1730800498 86532011 668.266 33.41 (-71.227527,41.997199)
MA 2505 686553938 58569977 265.08 22.614 (-71.298439,42.355353)
MA 2506 1364370758 864122260 526.787 333.639 (-70.885391,42.617112)
MA 2507 162316247 97575030 62.671 37.674 (-71.009442,42.316688)
MA 2508 845304170 447660702 326.374 172.843 (-70.944005,42.194734)
TX 4836 18455815604 1242340944 7125.831 479.671 (-94.43149,30.429193)
UT 4901 50662202730 3223068206 19560.787 1244.434 (-111.329824,40.961128)
UT 4902 103568306554 3008930687 39987.948 1161.755 (-112.553173,38.74535)
UT 4903 51982450346 457355124 20070.537 176.586 (-110.2164,38.696762)
UT 4904 6605369843 374212737 2550.348 144.484 (-111.844453,39.879317)
VT 5000 23871030489 1035236182 9216.657 399.707 (-72.673354,44.060548)
VA 5101 9542342795 2192604010 3684.319 846.569 (-76.906589,37.85234)
VA 5102 2568428064 4676499493 991.676 1805.607 (-75.886941,37.408136)
VA 5103 2452979018 548905782 947.101 211.934 (-76.951135,37.213528)
VA 5104 11163735614 180448766 4310.343 69.672 (-77.3068,36.974562)
VA 5105 25977046614 391709215 10029.794 151.24 (-78.740289,37.339049)
VA 5106 15358682992 104937376 5930.021 40.517 (-79.199254,38.136543)
VA 5107 7190825396 170998140 2776.393 66.023 (-77.74653,37.96804)
VA 5108 386527846 29003489 149.239 11.198 (-77.139586,38.779517)
VA 5109 23604811775 154881249 9113.869 59.8 (-81.350647,36.983357)
VA 5110 3554085389 36034039 1372.24 13.913 (-77.856758,39.0758)
VA 5111 479383806 21677104 185.091 8.37 (-77.294781,38.788187)
WA 5301 16022887883 1096000986 6186.472 423.168 (-121.657957,48.367369)
WA 5302 2628891455 2689556004 1015.021 1038.443 (-122.625916,48.372848)
WA 5303 23605189465 1212430234 9114.015 468.122 (-122.262232,46.270813)
WA 5304 49857847670 807704671 19250.223 311.857 (-119.707229,47.294586)
WA 5305 40075210026 598889562 15473.126 231.233 (-117.867549,47.573205)
WA 5306 17877991988 5090892772 6902.732 1965.605 (-123.550926,47.638847)
WA 5307 373304595 340401468 144.134 131.43 (-122.391357,47.578426)
WA 5308 19061530450 364912810 7359.698 140.894 (-121.039403,47.362367)
WA 5309 475071785 107564403 183.426 41.531 (-122.258306,47.457524)
WA 5310 2141076293 233482676 826.674 90.148 (-122.755815,47.041722)
WV 5401 16253632336 176490542 6275.563 68.143 (-80.268497,39.381986)
WV 5402 20764744914 127790482 8017.313 49.34 (-80.173761,38.838754)
WV 5403 25240298351 192564847 9745.334 74.35 (-81.21845,37.991116)
WI 5501 4475279776 2524512871 1727.915 974.72 (-88.046395,42.695215)
WI 5502 11749962702 189131014 4536.686 73.024 (-89.751034,42.984722)
WI 5503 28779398414 828682510 11111.788 319.956 (-90.891748,44.056297)
WI 5504 332415198 2454820704 128.346 947.812 (-87.84338,42.908416)
WI 5505 4897018076 165245438 1890.749 63.802 (-88.531462,43.199589)
WI 5506 12738582987 7318760932 4918.395 2825.79 (-88.27442,43.779216)
WI 5507 59666222544 7704559488 23037.258 2974.747 (-90.655335,45.698997)
WI 5508 17629185191 8181047526 6806.667 3158.72 (-87.936811,44.831256)
WY 5600 251470069067 1864445306 97093.141 719.866 (-107.541925,42.991802)
PR 7298 8867536532 4923745357 3423.775 1901.069 (-66.410799,18.217648)
MA 2509 3146160164 5152082129 1214.739 1989.23 (-70.485169,41.694853)
MI 2601 64821578223 75785387178 25027.752 29260.903 (-86.436912,46.157305)
MI 2602 8498237155 7471438194 3281.188 2884.739 (-86.318863,43.397541)
MI 2603 6808394834 179824156 2628.736 69.43 (-85.237276,42.720027)
MI 2604 21905598000 521806480 8457.799 201.471 (-84.750399,43.731553)
MI 2605 6083111435 4835861407 2348.703 1867.137 (-83.690011,44.081876)
MI 2606 9186011525 4068050944 3546.739 1570.683 (-86.156052,42.164052)
MI 2607 10949773216 527071787 4227.731 203.504 (-84.304955,42.093608)
MI 2608 3893207079 99631264 1503.176 38.468 (-83.945354,42.647773)
MI 2609 475489377 13351839 183.587 5.155 (-83.054722,42.52966)
MI 2610 10723688815 5444060009 4140.44 2101.963 (-82.882407,43.455904)
MI 2611 1085880060 55385897 419.261 21.385 (-83.453996,42.530002)
MI 2612 1044300868 71700685 403.207 27.684 (-83.449841,42.205152)
MI 2613 478755539 5465710 184.849 2.11 (-83.312553,42.380381)
MI 2614 481049094 97485386 185.734 37.639 (-82.921841,42.389224)
MI 26ZZ 0 4875244904 0 1882.343 (-86.544742,42.636317)
MN 2701 31012480589 541389247 11973.986 209.032 (-93.711742,43.898939)
MN 2702 6314168040 243962390 2437.914 94.194 (-92.853042,44.478968)
MN 2703 1365040751 144827884 527.045 55.918 (-93.52862,44.99588)
MN 2704 861134180 84668049 332.486 32.691 (-92.977339,45.00271)
MN 2705 351360899 16690995 135.661 6.444 (-93.2942,44.980969)
MN 2706 7464903674 404347034 2882.216 156.119 (-93.852055,45.336807)
MN 2707 86581508630 5045614519 33429.309 1948.123 (-95.675905,46.55302)
MN 2708 72281712436 12448954519 27908.126 4806.568 (-92.963806,47.250326)
MS 2801 27383428257 409454965 10572.801 158.091 (-89.003512,34.197518)
MS 2802 40278226793 961197230 15551.511 371.12 (-90.350829,33.17633)
MS 2803 33033947626 341748013 12754.479 131.95 (-89.746721,32.015544)
MS 2804 20835113252 2194607587 8044.483 847.343 (-89.083893,30.993478)
MO 2901 583674780 27140208 225.358 10.479 (-90.296228,38.728386)
MO 2902 1206319386 37446186 465.763 14.458 (-90.532337,38.60297)
MO 2903 17745419750 368194223 6851.545 142.161 (-91.563185,38.578171)
MO 2904 37299392401 757270733 14401.377 292.384 (-93.318995,38.282425)
MO 2905 6280330016 90725994 2424.849 35.03 (-93.783936,39.141446)
MO 2906 47134211054 526931462 18198.621 203.449 (-93.293542,39.948014)
MO 2907 16246582076 248452833 6272.841 95.928 (-93.706352,36.991061)
MO 2908 51543786838 444402073 19901.168 171.585 (-90.934515,37.194128)
MT 3000 376961878670 3869200368 145545.801 1493.907 (-109.634817,47.051177)
NE 3101 22996561630 249218683 8879.022 96.224 (-96.828662,41.374459)
NE 3102 1320212223 43520056 509.737 16.803 (-96.160905,41.228622)
NE 3103 174656907608 1063481110 67435.412 410.612 (-100.215927,41.554147)
NV 3201 270656933 16686 104.501 0.006 (-115.1515,36.133513)
NV 3202 144598292090 1316144422 55829.715 508.166 (-117.329684,40.651151)
NV 3203 7378846898 102387527 2848.989 39.532 (-115.154069,35.663338)
NV 3204 132084141620 629213043 50997.974 242.941 (-116.026576,38.085574)
NH 3301 6380829550 625830769 2463.652 241.635 (-71.199131,43.457846)
NH 3302 16806429727 401128387 6488.999 154.877 (-71.721452,43.764181)
NJ 3401 906545266 52000240 350.019 20.077 (-75.05803,39.791988)
NJ 3402 5419368072 2031977051 2092.43 784.551 (-74.908673,39.392647)
NJ 3403 2330203009 620085486 899.696 239.416 (-74.476374,39.898922)
NJ 3404 1791965109 48886164 691.882 18.875 (-74.319244,40.165145)
NJ 3405 2567455534 83871867 991.3 32.383 (-74.828136,41.18625)
NJ 3406 558275021 503092209 215.551 194.245 (-74.202649,40.35492)
NJ 3407 2512787275 47453474 970.193 18.322 (-74.789504,40.631748)
NJ 3408 141641193 37216922 54.688 14.37 (-74.108589,40.723043)
NJ 3409 246938979 19370224 95.344 7.479 (-74.073824,40.860782)
NJ 3410 196626172 12882293 75.918 4.974 (-74.209045,40.708964)
NJ 3411 1307859596 68783545 504.967 26.557 (-74.450462,40.902057)
NJ 3412 1067676465 18410734 412.232 7.108 (-74.573851,40.374205)
NM 3501 11914298787 17968586 4600.137 6.938 (-106.051091,34.771562)
NM 3502 185804422638 418852573 71739.492 161.72 (-106.299459,33.38532)
NM 3503 116442026815 319838514 44958.52 123.49 (-105.831875,36.009834)
NY 3601 1683553908 3359820481 650.024 1297.234 (-72.549522,40.983885)
NY 3602 471408004 374006681 182.012 144.405 (-73.288487,40.685329)
NY 3603 660252592 301737078 254.925 116.501 (-73.505379,40.860496)
NY 3604 287108344 168442511 110.853 65.036 (-73.60591,40.636948)
NY 3605 134369452 184610374 51.88 71.278 (-73.822303,40.599179)
NY 3606 77138776 661086 29.783 0.255 (-73.823549,40.734787)
NY 3607 41855438 2721994 16.16 1.051 (-73.91057,40.690936)
NY 3608 76824778 44942558 29.662 17.352 (-73.911077,40.621438)
NY 3609 40247314 529234 15.54 0.204 (-73.947201,40.642184)
NY 3610 36901378 22804282 14.248 8.805 (-74.00721,40.702069)
NY 3611 170510828 126204118 65.835 48.728 (-74.126314,40.566974)
NY 3612 38297238 7148862 14.787 2.76 (-73.951264,40.750025)
NY 3613 26557497 7064778 10.254 2.728 (-73.933035,40.838764)
NY 3614 73281172 39871691 28.294 15.395 (-73.83707,40.809695)
NY 3615 37651207 6365889 14.537 2.458 (-73.891157,40.824067)
NY 3616 202989104 76385016 78.375 29.492 (-73.791088,40.939735)
NY 3617 991000680 149852099 382.628 57.858 (-73.919355,41.159532)
NY 3618 3505353719 162199797 1353.425 62.626 (-74.080981,41.411657)
NY 3619 20556786296 430807927 7937.02 166.336 (-74.425648,42.227814)
NY 3620 3188987644 82332058 1231.275 31.789 (-73.988366,42.748882)
NY 3621 39147059483 3339725691 15114.765 1289.475 (-74.609231,44.008384)
NY 3622 13150538178 386994698 5077.451 149.419 (-75.662664,42.870701)
NY 3623 19092487463 1602471354 7371.651 618.718 (-77.845808,42.344244)
NY 3624 6186343632 3271972837 2388.561 1263.316 (-76.648094,43.210319)
NY 3625 1321388119 1831763088 510.191 707.248 (-77.731219,43.330179)
NY 3626 567552908 35642847 219.133 13.762 (-78.840983,42.961825)
NY 3627 10290361795 3222845071 3973.131 1244.347 (-78.316882,43.00085)
NC 3701 14230107017 411962964 5494.275 159.06 (-77.50398,36.100916)
NC 3702 8408851918 129062269 3246.676 49.831 (-79.297762,35.446238)
NC 3703 20228002531 10852474033 7810.076 4190.164 (-76.629796,35.40565)
NC 3704 2707456661 56471672 1045.355 21.804 (-78.995145,35.62432)
NC 3705 9251076807 64649149 3571.861 24.961 (-80.960593,36.14508)
NC 3706 9517030535 147325197 3674.546 56.883 (-79.68158,36.309988)
NC 3707 15958901284 1127024086 6161.766 435.146 (-78.325581,34.687139)
NC 3708 11688038111 167304561 4512.777 64.597 (-79.95142,35.122362)
NC 3709 2219428354 115853295 856.926 44.731 (-80.83843,35.379658)
NC 3710 6669641031 101485333 2575.163 39.184 (-81.62936,35.439187)
NC 3711 17710954888 191583194 6838.238 73.971 (-82.787715,35.553301)
NC 3712 1423601792 19055068 549.656 7.357 (-80.442471,35.646262)
NC 3713 5906700278 86935510 2280.59 33.566 (-78.213107,35.783228)
ND 3800 178711239147 4396568298 69000.798 1697.525 (-100.46193,47.456954)
OH 3901 1779216719 26656777 686.959 10.292 (-84.346772,39.336079)
OH 3902 8343964105 77276076 3221.623 29.836 (-83.560792,39.020784)
OH 3903 590529624 11237442 228.005 4.339 (-82.947495,39.966207)
OH 3904 12081967479 122679831 4664.874 47.367 (-83.935703,40.387175)
OH 3905 14572481738 72291719 5626.467 27.912 (-84.044789,41.155751)
OH 3906 18686847696 201813993 7215.033 77.921 (-81.575039,39.771409)
OH 3907 10009670581 64741008 3864.756 24.997 (-82.392918,40.481163)
OH 3908 6346731105 40375074 2450.487 15.589 (-84.160814,39.899479)
OH 3909 1203444252 4312245265 464.652 1664.967 (-82.548119,41.403253)
OH 3910 2926070888 15306890 1129.762 5.91 (-83.958852,39.701375)
OH 3911 633144520 1310816925 244.458 506.109 (-81.531037,41.61325)
OH 3912 5884227383 76927301 2271.913 29.702 (-82.613677,40.239323)
OH 3913 2316214576 70147310 894.295 27.084 (-80.978697,41.14963)
OH 3914 5058598501 3735719693 1953.136 1442.369 (-81.018103,41.751638)
OH 3915 12273779555 99723126 4738.933 38.503 (-82.756205,39.57786)
OH 3916 3121817970 31053689 1205.341 11.99 (-81.740604,40.982155)
OK 4001 4225995119 143510449 1631.666 55.41 (-95.789582,36.211741)
OK 4002 54377700020 1952860720 20995.348 754.004 (-95.459079,35.146709)
OK 4003 88361918285 813684558 34116.729 314.165 (-98.840225,36.105809)
OK 4004 25323037082 408089926 9777.28 157.564 (-97.750131,34.586592)
OK 4005 5371371050 59066845 2073.898 22.806 (-96.989604,35.307879)
OR 4101 7788094840 770435462 3007 297.467 (-123.341271,45.721199)
OR 4102 179855973028 1902810029 69442.782 734.679 (-119.59685,43.837494)
OR 4103 2782833882 82928829 1074.458 32.019 (-122.228679,45.399831)
OR 4104 44739550558 2227993094 17274.038 860.233 (-123.245543,43.490431)
OR 4105 13441349947 1207265814 5189.734 466.128 (-123.195164,45.028365)
PA 4201 201774448 31190532 77.906 12.043 (-75.214285,39.927735)
PA 4202 192014914 3473867 74.137 1.341 (-75.222197,40.015162)
PA 4203 9973523434 2116071750 3850.799 817.02 (-80.003557,41.407608)
PA 4204 3931190441 41638534 1517.841 16.077 (-76.91089,39.923851)
PA 4205 27741917011 213481014 10711.214 82.425 (-78.570677,41.387174)
PA 4206 2228610486 29513828 860.471 11.395 (-75.640689,40.060302)
PA 4207 2234030255 21218113 862.564 8.192 (-75.92178,39.898092)
PA 4208 1830927400 49409223 706.925 19.077 (-75.151156,40.33608)
PA 4209 14840864249 94904462 5730.09 36.643 (-78.673654,40.141578)
PA 4210 21699077641 298358374 8378.061 115.197 (-76.523189,41.372693)
PA 4211 8693230813 193137832 3356.475 74.571 (-76.45176,40.881389)
PA 4212 5602221956 59324952 2163.03 22.905 (-79.4865,40.428412)
PA 4213 401915431 2647082 155.18 1.022 (-75.159856,40.123926)
PA 4214 542054790 26843370 209.289 10.364 (-79.905708,40.432558)
PA 4215 3328220908 33974877 1285.033 13.118 (-75.962407,40.528964)
PA 4216 2583987204 105166877 997.683 40.605 (-76.213198,40.020882)
PA 4217 4489010475 59319459 1733.217 22.903 (-75.797088,40.885497)
PA 4218 5368492458 17448585 2072.787 6.737 (-80.027517,40.170535)
RI 4401 695396699 628727762 268.494 242.753 (-71.328672,41.630677)
RI 4402 1982169755 694940777 765.32 268.318 (-71.615514,41.569601)
SC 4501 4008949451 2197062974 1547.864 848.291 (-80.160624,32.714063)
SC 4502 7827385101 226166394 3022.17 87.323 (-81.376977,33.63446)
SC 4503 13644770782 518767470 5268.276 200.297 (-82.338204,34.363867)
SC 4504 3365165380 44947906 1299.298 17.354 (-82.174176,34.943666)
SC 4505 14259288624 265991794 5505.542 102.7 (-81.010777,34.530205)
SC 4506 20882884567 863479168 8062.927 333.391 (-80.523983,33.208208)
SC 4507 13868398039 959416179 5354.619 370.433 (-79.498848,34.083478)
SD 4600 196349580075 3379099963 75811 1304.678 (-100.238176,44.446796)
TN 4701 10727534244 207865072 4141.924 80.257 (-82.799933,36.21248)
TN 4702 6010527741 281228917 2320.678 108.583 (-83.821205,36.050328)
TN 4703 11837069583 372570013 4570.318 143.85 (-84.509444,35.761646)
TN 4704 15500657242 241483928 5984.837 93.237 (-86.628878,35.262145)
TN 4705 3233789391 72259782 1248.573 27.9 (-87.074025,36.187331)
TN 4706 16768130740 325902947 6474.212 125.832 (-85.778434,36.194771)
TN 4707 23725420202 416351652 9160.436 160.754 (-87.832914,35.633805)
TN 4708 17742779900 382968945 6850.526 147.865 (-89.099842,35.855566)
TN 4709 1251976949 54587609 483.391 21.076 (-89.977553,35.166762)
TX 4801 20354342566 977025370 7858.856 377.232 (-94.552046,31.951678)
TX 4802 799665920 55155962 308.753 21.296 (-95.178264,30.047399)
TX 4803 1245465867 97839990 480.877 37.776 (-96.613271,33.159472)
TX 4804 26218435714 1029443881 10122.995 397.471 (-95.421239,33.305202)
TX 4805 13063503125 495044994 5043.847 191.138 (-95.731668,32.225795)
TX 4806 5564347681 256154264 2148.407 98.902 (-96.665879,32.235054)
TX 4807 419433494 3173755 161.944 1.225 (-95.500307,29.724165)
TX 4808 15679168619 413854456 6053.761 159.79 (-95.543595,30.833269)
TX 4809 429016708 5329822 165.644 2.058 (-95.494207,29.64547)
TX 4810 13133703455 187193708 5070.951 72.276 (-96.594608,29.975184)
TX 4811 72084978179 573530200 27832.167 221.441 (-100.063696,31.732293)
TX 4812 3732589668 86690712 1441.161 33.471 (-97.664511,32.821179)
TX 4813 99324081728 767232538 38349.244 296.23 (-100.597872,34.837689)
TX 4814 6323178233 2553025292 2441.393 985.729 (-94.892695,29.433717)
TX 4815 20212457269 154736415 7804.074 59.744 (-98.263411,27.750011)
TX 4816 1839807888 4119389 710.354 1.591 (-106.310439,31.910828)
TX 4817 19816401268 308169315 7651.156 118.985 (-96.665768,31.153602)
TX 4818 609166070 4584054 235.2 1.77 (-95.253575,29.81855)
TX 4819 66913876220 282509180 25835.593 109.077 (-101.209738,33.24529)
TX 4820 517158384 1531315 199.676 0.591 (-98.622461,29.474317)
TX 4821 15335027478 91863760 5920.887 35.469 (-98.975368,30.05789)
TX 4822 2675047543 62752704 1032.842 24.229 (-95.677391,29.510739)
TX 4823 150372595400 449961144 58059.186 173.731 (-102.326756,30.38921)
TX 4824 680550576 23277427 262.762 8.987 (-97.012718,32.919469)
TX 4825 19737519157 320670326 7620.699 123.812 (-97.815913,31.500791)
TX 4826 2349508947 191870281 907.151 74.082 (-97.134174,33.184616)
TX 4827 23642064923 4517883089 9128.253 1744.364 (-96.841407,28.782994)
TX 4828 24290274205 300362174 9378.528 115.97 (-98.913612,27.848634)
TX 4829 484503884 10479728 187.068 4.046 (-95.199807,29.688161)
TX 4830 922738985 33054850 356.272 12.763 (-96.799407,32.658767)
TX 4831 5580112314 136956639 2154.494 52.879 (-97.535412,30.828818)
TX 4832 480864609 35470817 185.663 13.695 (-96.653636,32.920383)
TX 4833 548926029 16651298 211.942 6.429 (-97.106948,32.756444)
TX 4834 21212823704 3364926573 8190.317 1299.205 (-97.925366,26.773816)
TX 4835 1537846564 19752948 593.766 7.627 (-97.885176,29.915524)

View File

@ -0,0 +1,7 @@
0 2006-11-11 nov. the 11th should go
1 2006-10-12 12th of oct. should go
4 2006-05-12 month should be may, ok
6 \N some null date to play with
7 \N and a ragged line
8 2014-01-23 and a line with extra columns
9 2014-01-22 and another line