コード例 #1
0
        static RPFPolarFrameTransform createPolarFrameTransform(char zoneCode, String rpfDataType, double resolution)
        {
            if (!RPFZone.isZoneCode(zoneCode))
            {
                String message = Logging.getMessage("RPFZone.UnknownZoneCode", zoneCode);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }
            if (rpfDataType == null || !RPFDataSeries.isRPFDataType(rpfDataType))
            {
                String message = Logging.getMessage("RPFDataSeries.UnkownDataType", rpfDataType);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }
            if (resolution < 0)
            {
                String message = Logging.getMessage("generic.ArgumentOutOfRange", rpfDataType);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }

            RPFPolarFrameStructure frameStructure = RPFPolarFrameStructure.computeStructure(
                zoneCode, rpfDataType, resolution);

            return(new RPFPolarFrameTransform(zoneCode, rpfDataType, resolution, frameStructure));
        }
コード例 #2
0
        public static RPFNonpolarFrameStructure computeStructure(char zoneCode, String rpfDataType, double resolution)
        {
            if (!RPFZone.isZoneCode(zoneCode))
            {
                String message = Logging.getMessage("RPFZone.UnknownZoneCode", zoneCode);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }
            if (rpfDataType == null || !RPFDataSeries.isRPFDataType(rpfDataType))
            {
                String message = Logging.getMessage("RPFDataSeries.UnkownDataType", rpfDataType);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }
            if (resolution < 0)
            {
                String message = Logging.getMessage("generic.ArgumentOutOfRange", rpfDataType);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }

            // Constant zone properties.

            int ewPixelSpacingConst     = eastWestPixelSpacingConstant(zoneCode);
            int nsPixelSpacingConst     = northSouthPixelSpacingConstant();
            int equatorwardNominalBound = equatorwardNominalBoundary(zoneCode);
            int polewardNominalBound    = polewardNominalBoundary(zoneCode);

            // Scale/GSD specific zone properties.

            int nsPixelConst, ewPixelConst;

            if (RPFDataSeries.isCADRGDataType(rpfDataType))
            {
                nsPixelConst = northSouthPixelConstant_CADRG(nsPixelSpacingConst, resolution);
                ewPixelConst = eastWestPixelConstant_CADRG(ewPixelSpacingConst, resolution);
            }
            else if (RPFDataSeries.isCIBDataType(rpfDataType))
            {
                nsPixelConst = northSouthPixelConstant_CIB(nsPixelSpacingConst, resolution);
                ewPixelConst = eastWestPixelConstant_CIB(ewPixelSpacingConst, resolution);
            }
            else
            {
                nsPixelConst = -1;
                ewPixelConst = -1;
            }

            double polewardExtent    = polewardExtent(polewardNominalBound, nsPixelConst, PIXEL_ROWS_PER_FRAME);
            double equatorwardExtent = equatorwardExtent(equatorwardNominalBound, nsPixelConst, PIXEL_ROWS_PER_FRAME);

            int latFrames = latitudinalFrames(polewardExtent, equatorwardExtent, nsPixelConst, PIXEL_ROWS_PER_FRAME);
            int lonFrames = longitudinalFrames(ewPixelConst, PIXEL_ROWS_PER_FRAME);

            return(new RPFNonpolarFrameStructure(
                       nsPixelConst, ewPixelConst,
                       polewardExtent, equatorwardExtent,
                       latFrames, lonFrames));
        }
コード例 #3
0
        public static RPFPolarFrameStructure computeStructure(char zoneCode, String rpfDataType, double resolution)
        {
            if (!RPFZone.isZoneCode(zoneCode))
            {
                String message = Logging.getMessage("RPFZone.UnknownZoneCode", zoneCode);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }
            if (rpfDataType == null || !RPFDataSeries.isRPFDataType(rpfDataType))
            {
                String message = Logging.getMessage("RPFDataSeries.UnkownDataType", rpfDataType);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }
            if (resolution < 0)
            {
                String message = Logging.getMessage("generic.ArgumentOutOfRange", rpfDataType);
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }

            int nsPixelSpacingConst = northSouthPixelSpacingConstant();

            int polarPixelConst, polarFrames;

            if (RPFDataSeries.isCADRGDataType(rpfDataType))
            {
                polarPixelConst = polarPixelConstant_CADRG(nsPixelSpacingConst, resolution);
                polarFrames     = polarFrames_CADRG(polarPixelConst);
            }
            else if (RPFDataSeries.isCIBDataType(rpfDataType))
            {
                int nsPixelConst = northSouthPixelConstant_CIB(nsPixelSpacingConst, resolution);
                polarPixelConst = polarPixelConstant_CIB(nsPixelConst);
                polarFrames     = polarFrames_CIB(polarPixelConst);
            }
            else
            {
                polarPixelConst = -1;
                polarFrames     = -1;
            }

            double polewardExtent    = polewardExtent(polewardNominalBoundary(zoneCode));
            double equatorwardExtent = equatorwardExtent(equatorwardNominalBoundary(zoneCode));


            return(new RPFPolarFrameStructure(
                       polarPixelConst,
                       polewardExtent, equatorwardExtent,
                       polarFrames));
        }
コード例 #4
0
        /* [Section 30.6, MIL-C-89038] */
        /* [Section A.3.6, MIL-PRF-89041A] */
        public static RPFFrameFilename parseFilename(String filename)
        {
            if (filename == null)
            {
                String message = Logging.getMessage("nullValue.StringIsNull");
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }
            if (filename.length() != FILENAME_LENGTH)
            {
                String message = Logging.getMessage("RPFFrameFilename.BadFilenameLength", filename);
                Logging.logger().fine(message);
                throw new RPFFrameFilenameFormatException(message);
            }

            char[] buffer = new char[FILENAME_LENGTH];
            filename.getChars(0, FILENAME_LENGTH, buffer, 0);

            char   producerId     = buffer[7];
            String dataSeriesCode = filename.substring(9, 11);
            char   zoneCode       = buffer[11];

            // Default to CADRG filename structure.
            int frameChars   = 5;
            int versionChars = 2;

            if (RPFDataSeries.isCIBDataSeries(dataSeriesCode))
            {
                frameChars   = 6;
                versionChars = 1;
            }

            int frameNumber;
            int version;

            try
            {
                frameNumber = Base34Converter.parseChars(buffer, 0, frameChars);
                version     = Base34Converter.parseChars(buffer, frameChars, versionChars);
            }
            catch (ArgumentException e)
            {
                String message = Logging.getMessage("RPFFrameFilename.IntegerNotParsed");
                Logging.logger().fine(message);
                throw new RPFFrameFilenameFormatException(message, e);
            }

            return(new RPFFrameFilename(dataSeriesCode, frameNumber, producerId, version, zoneCode));
        }
コード例 #5
0
        public static bool isFilename(String str)
        {
            if (str == null)
            {
                String message = Logging.getMessage("nullValue.StringIsNull");
                Logging.logger().fine(message);
                throw new ArgumentException(message);
            }

            if (str.length() != FILENAME_LENGTH)
            {
                return(false);
            }

            char[] buffer = new char[FILENAME_LENGTH];
            str.getChars(0, 12, buffer, 0);

            if (!Base34Converter.isBase34(buffer, 0, 7))
            {
                return(false);
            }
            if (!RPFProducer.isProducerId(buffer[7]))
            {
                return(false);
            }
            if ('.' != buffer[8])
            {
                return(false);
            }
            String seriesCode = str.substring(9, 11);

            if (!RPFDataSeries.isDataSeriesCode(seriesCode))
            {
                return(false);
            }
            //noinspection RedundantIfStatement
            if (!RPFZone.isZoneCode(buffer[11]))
            {
                return(false);
            }

            return(true);
        }
コード例 #6
0
        /* [Section 30.6, MIL-C-89038] */
        /* [Section A.3.6, MIL-PRF-89041A] */
        private static void toCharArray(RPFFrameFilename frameFilename, char[] dest)
        {
            // Default to CARDG filename strucutre.
            int frameChars   = 5;
            int versionChars = 2;

            if (RPFDataSeries.isCIBDataSeries(frameFilename.dataSeriesCode))
            {
                frameChars   = 6;
                versionChars = 1;
            }

            Base34Converter.valueOf(frameFilename.frameNumber, dest, 0, frameChars);
            Base34Converter.valueOf(frameFilename.version, dest, frameChars, versionChars);
            dest[7] = frameFilename.producerId;
            dest[8] = '.';
            frameFilename.dataSeriesCode.getChars(0, 2, dest, 9);
            dest[11] = frameFilename.zoneCode;
        }