Exemple #1
0
    public static BinaryFileMapInfo Parse(string info)
    {
        string[] fields = info.Split(separator);
        for (int i = 0; i < fields.GetLength(0); i++)
        {
            fields[i] = fields[i].Trim(charsToTrim);
        }

        BinaryFileMapInfo result = new BinaryFileMapInfo();

        // Field indices from http://www.harrisgeospatial.com/docs/ENVIHeaderFiles.html
        result.projection  = fields[0];
        result.refX        = int.Parse(fields[1]);
        result.refY        = int.Parse(fields[2]);
        result.refEasting  = double.Parse(fields[3]);
        result.refNorthing = double.Parse(fields[4]);
        double pixelSizeX = double.Parse(fields[5]);
        double pixelSizeY = double.Parse(fields[6]);

        if (Mathf.Abs((float)(1 - pixelSizeX / pixelSizeY)) > pixelSizeTolerance)
        {
            throw new System.ArgumentException("Pixel sizes differ too much!");
        }
        result.pixelSize = (pixelSizeX + pixelSizeY) / 2;

        return(result);
    }
Exemple #2
0
    private void ProcessMapInfo()
    {
        BinaryFileMapInfo info = BinaryFileMapInfo.Parse(data[mapInfoKey]);

        cellsize = (float)info.pixelSize;
        CoordinateConverter conv = new CoordinateConverter(cellsize);
        int deltaX = 1 - info.refX;           // Lower left corner is map point (0, rows). The hdr top left coordinates are (1,1).
        int deltaY = -(rows + 1) + info.refY; // The amount of y pixels to move to reach lower left corner from reference point.

        lowerLeftCornerX = conv.TransformCoordinateByWebMercatorDistance(deltaX, info.refEasting);
        lowerLeftCornerY = conv.TransformCoordinateByWebMercatorDistance(deltaY, info.refNorthing);
    }