1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
/****************************************************************************** * * Project: GDAL Core * Purpose: GDALRasterAttributeTable class declarations. * Author: Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2005, Frank Warmerdam * * SPDX-License-Identifier: MIT ****************************************************************************/ #ifndef GDAL_RAT_H_INCLUDED #define GDAL_RAT_H_INCLUDED #if !defined(GDAL_COMPILATION) && \ !defined(GDAL_RAT_SKIP_OTHER_GDAL_HEADERS) && !defined(GDAL_4_0_COMPAT) #include "cpl_minixml.h" #include "gdal_priv.h" #else #include "cpl_port.h" #include "cpl_error.h" #include "cpl_string.h" #include "gdal.h" #endif #include #include class GDALColorTable; // Clone and Serialize are allowed to fail if GetRowCount()*GetColCount() // greater than this number #define RAT_MAX_ELEM_FOR_CLONE 1000000 /************************************************************************/ /* GDALRasterAttributeTable */ /************************************************************************/ //! Raster Attribute Table interface. class GDALDefaultRasterAttributeTable; class CPL_DLL GDALRasterAttributeTable { public: virtual ~GDALRasterAttributeTable(); /** * \brief Copy Raster Attribute Table * * Creates a new copy of an existing raster attribute table. The new copy * becomes the responsibility of the caller to destroy. * May fail (return nullptr) if the attribute table is too large to clone * (GetRowCount() * GetColCount() > RAT_MAX_ELEM_FOR_CLONE) * * This method is the same as the C function GDALRATClone(). * * @return new copy of the RAT as an in-memory implementation. */ virtual GDALRasterAttributeTable *Clone() const = 0; /** * \brief Fetch table column count. * * This method is the same as the C function GDALRATGetColumnCount(). * * @return the number of columns. */ virtual int GetColumnCount() const = 0; /** * \brief Fetch name of indicated column. * * This method is the same as the C function GDALRATGetNameOfCol(). * * @param iCol the column index (zero based). * * @return the column name or an empty string for invalid column numbers. */ virtual const char *GetNameOfCol(int iCol) const = 0; /** * \brief Fetch column usage value. * * This method is the same as the C function GDALRATGetUsageOfCol(). * * @param iCol the column index (zero based). * * @return the column usage, or GFU_Generic for improper column numbers. */ virtual GDALRATFieldUsage GetUsageOfCol(int iCol) const = 0; /** * \brief Fetch column type. * * This method is the same as the C function GDALRATGetTypeOfCol(). * * @param iCol the column index (zero based). * * @return column type or GFT_Integer if the column index is illegal. */ virtual GDALRATFieldType GetTypeOfCol(int iCol) const = 0; /** * \brief Fetch column index for given usage. * * Returns the index of the first column of the requested usage type, or -1 * if no match is found. * * This method is the same as the C function GDALRATGetUsageOfCol(). * * @param eUsage usage type to search for. * * @return column index, or -1 on failure. */ virtual int GetColOfUsage(GDALRATFieldUsage eUsage) const = 0; /** * \brief Fetch row count. * * This method is the same as the C function GDALRATGetRowCount(). * * @return the number of rows. */ virtual int GetRowCount() const = 0; /** * \brief Fetch field value as a string. * * The value of the requested column in the requested row is returned * as a string. This method is nominally called on fields of type GFT_String, * but it can be called on fields of other types as well. * If the field is numeric, it is formatted as a string * using default rules, so some precision may be lost. * * The returned string is temporary and cannot be expected to be * available after the next GDAL call. * * This method is the same as the C function GDALRATGetValueAsString(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * * @return field value. */ virtual const char *GetValueAsString(int iRow, int iField) const = 0; /** * \brief Fetch field value as a integer. * * The value of the requested column in the requested row is returned * as an integer. This method is nominally called on fields of type * GFT_Integer, but it can be called on fields of other types as well. * Non-integer fields will be converted to integer with the possibility of * data loss. * * This method is the same as the C function GDALRATGetValueAsInt(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * * @return field value */ virtual int GetValueAsInt(int iRow, int iField) const = 0; /** * \brief Fetch field value as a double. * * The value of the requested column in the requested row is returned * as a double. This method is nominally called on fields of type * GFT_Real, but it can be called on fields of other types as well. * Non double fields will be converted to double with * the possibility of data loss. * * This method is the same as the C function GDALRATGetValueAsDouble(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * * @return field value */ virtual double GetValueAsDouble(int iRow, int iField) const = 0; /** * \brief Fetch field value as a boolean. * * The value of the requested column in the requested row is returned * as a boolean. This method is nominally called on fields of type * GFT_Boolean, but it can be called on fields of other types as well. * Non boolean fields will be converted to boolean with the possibility of * data loss. * * This method is the same as the C function GDALRATGetValueAsBoolean(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * * @return field value * @since 3.12 */ virtual bool GetValueAsBoolean(int iRow, int iField) const = 0; /** * \brief Fetch field value as a datetime. * * The value of the requested column in the requested row is returned * as a datetime. Besides being called on a GFT_DateTime field, it * is also possible to call this method on a string field that contains a * ISO-8601 encoded datetime. * * This method is the same as the C function GDALRATGetValueAsDateTime(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * * @return field value * @since 3.12 */ virtual GDALRATDateTime GetValueAsDateTime(int iRow, int iField) const = 0; /** * \brief Fetch field value as a WKB geometry. * * The value of the requested column in the requested row is returned * as a WKB geometry. Besides being called on a GFT_WKBGeometry field, it * is also possible to call this method on a string field that contains a WKT * encoded geometry. * * The returned pointer may be invalidated by a following call to a method * of this GDALRasterAttributeTable instance. * * This method is the same as the C function GDALRATGetValueAsWKBGeometry(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * @param[out] nWKBSize Number of bytes of the returned pointer * @return field value, or nullptr * @since 3.12 */ virtual const GByte *GetValueAsWKBGeometry(int iRow, int iField, size_t &nWKBSize) const = 0; /** * \brief Set field value from string. * * The indicated field (column) on the indicated row is set from the * passed value. This method is nominally called on fields of type * GFT_String, but it can be called on fields of other types as well. * The value will be automatically converted for other field * types, with a possible loss of precision. * * This method is the same as the C function GDALRATSetValueAsString(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * @param pszValue the value to assign. * @return (since 3.12) CE_None in case of success, error code otherwise */ virtual CPLErr SetValue(int iRow, int iField, const char *pszValue) = 0; /** * \brief Set field value from integer. * * The indicated field (column) on the indicated row is set from the * passed value. This method is nominally called on fields of type * GFT_Integer, but it can be called on fields of other types as well. * The value will be automatically converted for other field * types, with a possible loss of precision. * * This method is the same as the C function GDALRATSetValueAsInteger(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * @param nValue the value to assign. * @return (since 3.12) CE_None in case of success, error code otherwise */ virtual CPLErr SetValue(int iRow, int iField, int nValue) = 0; /** * \brief Set field value from double. * * The indicated field (column) on the indicated row is set from the * passed value. This method is nominally called on fields of type * GFT_Real, but it can be called on fields of other types as well. * The value will be automatically converted for other field * types, with a possible loss of precision. * * This method is the same as the C function GDALRATSetValueAsDouble(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * @param dfValue the value to assign. * @return (since 3.12) CE_None in case of success, error code otherwise */ virtual CPLErr SetValue(int iRow, int iField, double dfValue) = 0; /** * \brief Set field value from boolean. * * The indicated field (column) on the indicated row is set from the * passed value. This method is nominally called on fields of type * GFT_Boolean, but it can be called on fields of other types as well. * The value will be automatically converted for other field * types, with a possible loss of precision. * * This method is the same as the C function GDALRATSetValueAsBoolean(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * @param bValue the value to assign. * @return CE_None in case of success, error code otherwise * @since 3.12 */ virtual CPLErr SetValue(int iRow, int iField, bool bValue) = 0; /** * \brief Set field value from datetime. * * The indicated field (column) on the indicated row is set from the * passed value. Besides being called on a field of type GFT_DateTime, this * method can also be called on a field of type GFT_String, in which case * the datetime will be converted into its ISO-8601 representation. * * Note that the GDALRATDateTime::bIsValid field must be set to true if * the date time is valid. * * This method is the same as the C function GDALRATSetValueAsDateTime(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * @param sDateTime Date time value * @return CE_None in case of success, error code otherwise * @since 3.12 */ virtual CPLErr SetValue(int iRow, int iField, const GDALRATDateTime &sDateTime) = 0; /** * \brief Set field value from a WKB geometry. * * The indicated field (column) on the indicated row is set from the * passed value. Besides being called on a field of type GFT_WKBGeometry, this * method can also be called on a field of type GFT_String, in which case * the datetime will be converted into its WKT geometry representation. * * This method is the same as the C function GDALRATSetValueAsWKBGeometry(). * * @param iRow row to fetch (zero based). * @param iField column to fetch (zero based). * @param pabyWKB Pointer to a WKB encoded geometry * @param nWKBSize Number of bytes of pabyWKB. * @return CE_None in case of success, error code otherwise * @since 3.12 */ virtual CPLErr SetValue(int iRow, int iField, const void *pabyWKB, size_t nWKBSize) = 0; /** * \brief Determine whether changes made to this RAT are reflected directly * in the dataset * * If this returns FALSE then GDALRasterBand.SetDefaultRAT() should be * called. Otherwise this is unnecessary since changes to this object are * reflected in the dataset. * * This method is the same as the C function * GDALRATChangesAreWrittenToFile(). * */ virtual int ChangesAreWrittenToFile() = 0; /** * \brief Set the RAT table type. * * Set whether the RAT is thematic or athematic (continuous). * */ virtual CPLErr SetTableType(const GDALRATTableType eInTableType) = 0; /** * \brief Get the RAT table type. * * Indicates whether the RAT is thematic or athematic (continuous). * * @return table type */ virtual GDALRATTableType GetTableType() const = 0; virtual CPLErr ValuesIO(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, double *pdfData); virtual CPLErr ValuesIO(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, int *pnData); virtual CPLErr ValuesIO(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, char **papszStrList); virtual CPLErr ValuesIO(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, bool *pbData); virtual CPLErr ValuesIO(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, GDALRATDateTime *pasDateTime); virtual CPLErr ValuesIO(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, GByte **ppabyWKB, size_t *pnWKBSize); virtual void SetRowCount(int iCount); virtual int GetRowOfValue(double dfValue) const; virtual int GetRowOfValue(int nValue) const; virtual CPLErr CreateColumn(const char *pszFieldName, GDALRATFieldType eFieldType, GDALRATFieldUsage eFieldUsage); virtual CPLErr SetLinearBinning(double dfRow0Min, double dfBinSize); virtual int GetLinearBinning(double *pdfRow0Min, double *pdfBinSize) const; /** * \brief Serialize * * May fail (return nullptr) if the attribute table is too large to * serialize (GetRowCount() * GetColCount() > RAT_MAX_ELEM_FOR_CLONE) */ virtual CPLXMLNode *Serialize() const; virtual void *SerializeJSON() const; virtual CPLErr XMLInit(const CPLXMLNode *, const char *); virtual CPLErr InitializeFromColorTable(const GDALColorTable *); virtual GDALColorTable *TranslateToColorTable(int nEntryCount = -1); virtual void DumpReadable(FILE * = nullptr); /** Convert a GDALRasterAttributeTable* to a GDALRasterAttributeTableH. */ static inline GDALRasterAttributeTableH ToHandle(GDALRasterAttributeTable *poRAT) { return static_cast(poRAT); } /** Convert a GDALRasterAttributeTableH to a GDALRasterAttributeTable*. */ static inline GDALRasterAttributeTable * FromHandle(GDALRasterAttributeTableH hRAT) { return static_cast(hRAT); } /** * \brief Remove statistics from the RAT. * */ virtual void RemoveStatistics() = 0; //! @cond Doxygen_Suppress static std::string DateTimeToString(const GDALRATDateTime &sDateTime); static bool StringToDateTime(const char *pszStr, GDALRATDateTime &sDateTime); static std::string WKBGeometryToWKT(const void *pabyWKB, size_t nWKBSize); static std::vector WKTGeometryToWKB(const char *pszWKT); //! @endcond protected: //! @cond Doxygen_Suppress GDALRasterAttributeTable() = default; GDALRasterAttributeTable(const GDALRasterAttributeTable &) = default; GDALRasterAttributeTable & operator=(const GDALRasterAttributeTable &) = default; GDALRasterAttributeTable(GDALRasterAttributeTable &&) = default; GDALRasterAttributeTable &operator=(GDALRasterAttributeTable &&) = default; CPLErr ValuesIOBooleanFromIntoInt(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, bool *pbData); CPLErr ValuesIODateTimeFromIntoString(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, GDALRATDateTime *psDateTime); CPLErr ValuesIOWKBGeometryFromIntoString(GDALRWFlag eRWFlag, int iField, int iStartRow, int iLength, GByte **ppabyWKB, size_t *pnWKBSize); //! @endcond }; /************************************************************************/ /* GDALDefaultRasterAttributeTable */ /************************************************************************/ //! Raster Attribute Table container. class CPL_DLL GDALDefaultRasterAttributeTable : public GDALRasterAttributeTable { private: struct GDALRasterAttributeField { CPLString sName{}; GDALRATFieldType eType = GFT_Integer; GDALRATFieldUsage eUsage = GFU_Generic; std::vector anValues{}; std::vector adfValues{}; std::vector aosValues{}; std::vector abValues{}; std::vector asDateTimeValues{}; std::vector> aabyWKBGeometryValues{}; }; std::vector aoFields{}; int bLinearBinning = false; // TODO(schwehr): Can this be a bool? double dfRow0Min = -0.5; double dfBinSize = 1.0; GDALRATTableType eTableType = GRTT_THEMATIC; void AnalyseColumns(); int bColumnsAnalysed = false; // TODO(schwehr): Can this be a bool? int nMinCol = -1; int nMaxCol = -1; int nRowCount = 0; CPLString osWorkingResult{}; mutable std::vector m_abyWKB{}; public: GDALDefaultRasterAttributeTable(); ~GDALDefaultRasterAttributeTable() override; //! @cond Doxygen_Suppress GDALDefaultRasterAttributeTable(const GDALDefaultRasterAttributeTable &) = default; GDALDefaultRasterAttributeTable & operator=(const GDALDefaultRasterAttributeTable &) = default; GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable &&) = default; GDALDefaultRasterAttributeTable & operator=(GDALDefaultRasterAttributeTable &&) = default; //! @endcond GDALDefaultRasterAttributeTable *Clone() const override; int GetColumnCount() const override; const char *GetNameOfCol(int) const override; GDALRATFieldUsage GetUsageOfCol(int) const override; GDALRATFieldType GetTypeOfCol(int) const override; int GetColOfUsage(GDALRATFieldUsage) const override; int GetRowCount() const override; const char *GetValueAsString(int iRow, int iField) const override; int GetValueAsInt(int iRow, int iField) const override; double GetValueAsDouble(int iRow, int iField) const override; bool GetValueAsBoolean(int iRow, int iField) const override; GDALRATDateTime GetValueAsDateTime(int iRow, int iField) const override; const GByte *GetValueAsWKBGeometry(int iRow, int iField, size_t &nWKBSize) const override; CPLErr SetValue(int iRow, int iField, const char *pszValue) override; CPLErr SetValue(int iRow, int iField, double dfValue) override; CPLErr SetValue(int iRow, int iField, int nValue) override; CPLErr SetValue(int iRow, int iField, bool bValue) override; CPLErr SetValue(int iRow, int iField, const GDALRATDateTime &sDateTime) override; CPLErr SetValue(int iRow, int iField, const void *pabyWKB, size_t nWKBSize) override; int ChangesAreWrittenToFile() override; void SetRowCount(int iCount) override; int GetRowOfValue(double dfValue) const override; int GetRowOfValue(int nValue) const override; CPLErr CreateColumn(const char *pszFieldName, GDALRATFieldType eFieldType, GDALRATFieldUsage eFieldUsage) override; CPLErr SetLinearBinning(double dfRow0Min, double dfBinSize) override; int GetLinearBinning(double *pdfRow0Min, double *pdfBinSize) const override; CPLErr SetTableType(const GDALRATTableType eInTableType) override; GDALRATTableType GetTableType() const override; void RemoveStatistics() override; }; std::unique_ptr CPL_DLL GDALLoadVATDBF(const char *pszFilename); #endif /* ndef GDAL_RAT_H_INCLUDED */