From 287a1d71a6dfe9117838304a9e08f19eabb67b33 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@8a9318a1-56ba-4d59-b755-99d26321be01> Date: Thu, 22 Oct 2009 23:24:54 +0000 Subject: [PATCH] handling NaN values in longitude and latitude data git-svn-id: https://svn.ssec.wisc.edu/repos/glance/trunk@87 8a9318a1-56ba-4d59-b755-99d26321be01 --- pyglance/glance/compare.py | 45 ++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/pyglance/glance/compare.py b/pyglance/glance/compare.py index 75472e4..7abac02 100644 --- a/pyglance/glance/compare.py +++ b/pyglance/glance/compare.py @@ -382,9 +382,9 @@ def _get_and_analyze_lon_lat (fileObject, longitudeData = longitudeDataFilterFn(longitudeData) LOG.debug ('longitude size after application of filter: ' + str(longitudeData.shape)) - # build a mask of our spacially invalid data - invalidLatitude = (latitudeData < -90) | (latitudeData > 90) - invalidLongitude = (longitudeData < -180) | (longitudeData > 360) + # build a mask of our spacially invalid data TODO, load actual valid range attributes? + invalidLatitude = (latitudeData < -90) | (latitudeData > 90) | ~isfinite(latitudeData) + invalidLongitude = (longitudeData < -180) | (longitudeData > 360) | ~isfinite(longitudeData) spaciallyInvalidMask = invalidLatitude | invalidLongitude # analyze our spacially invalid data @@ -444,20 +444,24 @@ def _check_lon_lat_equality(longitudeA, latitudeA, + "distorted or spacially nonsensical.") # if we are making images, make two showing the invalid lons/lats if (doMakeImages) : - plot.plot_and_save_spacial_trouble(longitudeA, latitudeA, - lon_lat_not_equal_mask, - ignoreMaskA, - "A", "Lon./Lat. Points Mismatched between A and B\n" + - "(Shown in A)", - "LonLatMismatch", - outputPath, True) - plot.plot_and_save_spacial_trouble(longitudeB, latitudeB, - lon_lat_not_equal_mask, - ignoreMaskB, - "B", "Lon./Lat. Points Mismatched between A and B\n" + - "(Shown in B)", - "LonLatMismatch", - outputPath, True) + + if (len(longitudeA[~ignoreMaskA]) > 0) and (len(latitudeA[~ignoreMaskA]) > 0) : + plot.plot_and_save_spacial_trouble(longitudeA, latitudeA, + lon_lat_not_equal_mask, + ignoreMaskA, + "A", "Lon./Lat. Points Mismatched between A and B\n" + + "(Shown in A)", + "LonLatMismatch", + outputPath, True) + + if (len(longitudeB[~ignoreMaskB]) > 0) and (len(latitudeB[~ignoreMaskB]) > 0) : + plot.plot_and_save_spacial_trouble(longitudeB, latitudeB, + lon_lat_not_equal_mask, + ignoreMaskB, + "B", "Lon./Lat. Points Mismatched between A and B\n" + + "(Shown in B)", + "LonLatMismatch", + outputPath, True) # setup our return data returnInfo = {} @@ -505,14 +509,17 @@ def _compare_spatial_invalidity(invalid_in_a_mask, invalid_in_b_mask, spatial_in latitude_common [valid_only_in_mask_b] = latitude_b [valid_only_in_mask_b] # plot the points that are only valid one file and not the other - if (spatial_info['file A']['numInvPts'] > 0) and (do_include_images) : + if ((spatial_info['file A']['numInvPts'] > 0) and (do_include_images) and + (len(longitude_a[~invalid_in_a_mask]) > 0) and (len(latitude_a[~invalid_in_a_mask]) > 0)) : plot.plot_and_save_spacial_trouble(longitude_a, latitude_a, valid_only_in_mask_a, invalid_in_a_mask, "A", "Points only valid in\nFile A\'s longitude & latitude", "SpatialMismatch", output_path, True) - if (spatial_info['file B']['numInvPts'] > 0) and (do_include_images) : + if ((spatial_info['file B']['numInvPts'] > 0) and (do_include_images) and + (len(longitude_b[~invalid_in_b_mask]) > 0) and (len(latitude_b[~invalid_in_b_mask]) > 0) + ) : plot.plot_and_save_spacial_trouble(longitude_b, latitude_b, valid_only_in_mask_b, invalid_in_b_mask, -- GitLab