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
// Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. #pragma once #include #include #include #include "parquet/platform.h" #include "parquet/types.h" namespace parquet::geospatial { /// \brief The maximum number of dimensions represented by a geospatial type /// (i.e., X, Y, Z, and M) inline constexpr int kMaxDimensions = 4; /// \brief NaN, used to represent bounds for which predicate pushdown cannnot /// be applied (e.g., because a writer did not provide bounds for a given dimension) inline constexpr double kNaN = std::numeric_limits::quiet_NaN(); /// \brief Structure represented encoded statistics to be written to and read from Parquet /// serialized metadata. /// /// See the Parquet Thrift definition and GeoStatistics for the specific definition /// of field values. struct PARQUET_EXPORT EncodedGeoStatistics { bool xy_bounds_present{false}; double xmin{kNaN}; double xmax{kNaN}; double ymin{kNaN}; double ymax{kNaN}; bool z_bounds_present{false}; double zmin{kNaN}; double zmax{kNaN}; bool m_bounds_present{false}; double mmin{kNaN}; double mmax{kNaN}; bool geospatial_types_present() const { return !geospatial_types.empty(); } std::vector geospatial_types; }; class GeoStatisticsImpl; /// \brief Base type for computing geospatial column statistics while writing a file /// or representing them when reading a file /// /// These statistics track the minimum and maximum value (omitting NaN values) of the /// four possible dimensions (X, Y, Z, and M) and the distinct set of geometry /// type/dimension combinations (e.g., point XY, linestring XYZM) present in the data. /// Any of these individual components may be "invalid": for example, when reading a /// Parquet file, information about individual components obtained from the column /// chunk metadata may have been missing or deemed unusable. Orthogonally, /// any of these individual components may be "empty": for example, when using /// GeoStatistics to accumulate bounds whilst writing, if all geometries in a column chunk /// are null, all ranges (X, Y, Z, and M) will be empty. If all geometries in a column /// chunk contain only XY coordinates (the most common case), the Z and M ranges will /// be empty but the X and Y ranges will contain finite bounds. Empty ranges are /// considered "valid" because they are known to represent exactly zero values (in /// contrast to an invalid range, whose contents is completely unknown). These concepts /// are all necessary for this object to accurately represent (1) accumulated or partially /// accumulated statistics during the writing process and (2) deserialized statistics read /// from the column chunk metadata during the reading process. /// /// EXPERIMENTAL class PARQUET_EXPORT GeoStatistics { public: GeoStatistics(); explicit GeoStatistics(const EncodedGeoStatistics& encoded); ~GeoStatistics(); /// \brief Return true if bounds, geometry types, and validity are identical bool Equals(const GeoStatistics& other) const; /// \brief Update these statistics based on previously calculated or decoded statistics /// /// Merging statistics with wraparound X values is not currently supported. Merging /// two GeoStatistics where one or both has a wraparound X range will result in these /// statistics having an X dimension marked as invalid. void Merge(const GeoStatistics& other); /// \brief Update these statistics based on values void Update(const ByteArray* values, int64_t num_values); /// \brief Update these statistics based on the non-null elements of values void UpdateSpaced(const ByteArray* values, const uint8_t* valid_bits, int64_t valid_bits_offset, int64_t num_spaced_values, int64_t num_values); /// \brief Update these statistics based on the non-null elements of values /// /// Currently, BinaryArray and LargeBinaryArray input is supported. void Update(const ::arrow::Array& values); /// \brief Return these statistics to an empty state void Reset(); /// \brief Encode the statistics for serializing to Thrift /// /// If invalid WKB was encountered or if the statistics contain NaN /// for any reason, Encode() will return nullopt to indicate that /// statistics should not be written to thrift. std::optional Encode() const; /// \brief Returns false if invalid WKB was encountered bool is_valid() const; /// \brief Reset existing statistics and populate them from previously-encoded ones void Decode(const EncodedGeoStatistics& encoded); /// \brief Minimum values in XYZM order /// /// For dimensions where dimension_valid() is false, the value will be NaN. For /// dimensions where dimension_empty() is true, the value will be +Inf. /// /// For the first dimension (X) only, wraparound bounds apply where xmin > xmax. In this /// case, these bounds represent the union of the intervals [xmax, Inf] and [-Inf, /// xmin]. This implementation does not yet generate these types of bounds but they may /// be encountered in statistics when reading a Parquet file. std::array lower_bound() const; /// \brief Maximum values in XYZM order /// /// For dimensions where dimension_valid() is false, the value will be NaN. For /// dimensions where dimension_empty() is true, the value will be -Inf. /// /// For the first dimension (X) only, wraparound bounds apply where xmin > xmax. In this /// case, these bounds represent the union of the intervals [xmax, Inf] and [-Inf, /// xmin]. This implementation does not yet generate these types of bounds but they may /// be encountered in statistics when reading a Parquet file. std::array upper_bound() const; /// \brief Dimension emptiness in XYZM order /// /// True for a given dimension if and only if zero non-NaN values were encountered /// in that dimension and dimension_valid() is true for that dimension. /// /// When calculating statistics, zero or more of these values may be true because /// this implementation calculates bounds for all dimensions; however, it may be /// true that zero coordinates were encountered in a given dimension. For example, /// dimension_empty() will return four true values if Update() was not called /// or if Update() was called with only null values. If Update() was provided /// one or more geometries with X and Y dimensions but not Z or M dimensions, /// dimension_empty() will return true, true, false, false. /// /// For statistics read from a Parquet file, dimension_empty() will always contain /// false values because there is no mechanism to communicate an empty interval /// in the Thrift metadata. std::array dimension_empty() const; /// \brief Dimension validity (i.e. presence) in XYZM order /// /// When calculating statistics, this will always be true because this implementation /// calculates statistics for all dimensions. When reading a Parquet file, one or more /// of these values may be false because the file may not have provided bounds for all /// dimensions. /// /// See documentation for dimension_empty(), lower_bound(), and/or upper_bound() for the /// canonical values of those outputs for the dimensions where dimension_valid() is /// false. std::array dimension_valid() const; /// \brief Return the geometry type codes /// /// This implementation always returns sorted output with no duplicates. When /// calculating statistics, a value will always be returned (although the returned /// vector may be empty if Update() was never called or was only called with null /// values). When reading a Parquet file, std::nullopt may be returned because /// the file may not have provided this information. std::optional> geometry_types() const; /// \brief Return a string representation of these statistics std::string ToString() const; private: std::unique_ptr impl_; }; } // namespace parquet::geospatial