RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
Михаил Ширшов
Asked: 2025-02-12 16:03:27 +0000 UTC

API NSPD。数据输出问题

  • 4

这是代码

import httpx
from datetime import datetime
import asyncio

async def fetch_data(url, client):
    """Функция для асинхронного получения данных по URL с повторными попытками"""
    response = await client.get(url, timeout=30)
    await asyncio.sleep(2)
    if response.status_code == 200:
        return response.json()

async def api_nspd_json(code):
    result_parts_zu = None
    objectsList = None
    result_string = None
    pomList = None
    mashList = None
    landLinks = None
    buildParts = None
    permissionType = None
    result = {}
    code = code.replace(':', '%3A')
    url = f'https://nspd.gov.ru/api/geoportal/v2/search/geoportal?thematicSearchId=1&query={code}'

    async with httpx.AsyncClient(verify=False) as client:
        response_data = await fetch_data(url, client)
        
        if not response_data or 'data' not in response_data or 'features' not in response_data['data']:
            result['message'] = 'Объект не найден в НСПД, возможно снят с учета или ввели не правильно кадастровый номер.'
            return result, result_parts_zu, objectsList, result_string, pomList, mashList, landLinks, buildParts, permissionType
        
        coordinates = 'Без координат'
        for feature in response_data['data']['features']:
            if feature['geometry']['type'] == 'Polygon':
                coordinates = 'С координатами'

        properties = response_data['data']['features'][0]['properties']['options']
        feature_id = response_data['data']['features'][0]['id']
        category_id = response_data['meta'][0]['categoryId']
        
        async def get_tab_values(url):
            tab_data = await fetch_data(url, client)
            print(tab_data)
            if not tab_data:
                return "Нет данных"
            title = tab_data.get("title", "Нет заголовка")
            values = tab_data.get("value", [])
            values = [value for value in values if value]
            return f"{title}: <code>{', '.join(values)}</code>" if values else "Нет данных"

        if category_id == 36368:  # ЗУ
            result_parts_zu = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landParts&categoryId={category_id}&geomId={feature_id}')
            objectsList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-group-data?tabClass=objectsList&categoryId={category_id}&geomId={feature_id}')
        elif category_id == 36384:  # ОНС
            landLinks = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&categoryId=36384&geomId={feature_id}')
        elif category_id == 36383:  # Сооружения
            pomList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&categoryId=36383&geomId={feature_id}')
            mashList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=buildParts&categoryId=36383&geomId={feature_id}')
            buildParts = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=permissionType&categoryId=36383&geomId={feature_id}')
        elif category_id == 36369:  # ОКС
            permissionType = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=permissionType&categoryId=36369&geomId={feature_id}')

        for key, value in properties.items():
            if key == 'registersId' and value == 36440:
                result_string = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=compositionLand&objdocId={feature_id}&registersId=36440')
            elif key == 'registersId' and value == 36441:
                landLinks = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&objdocId={feature_id}&registersId=36441')
                objectsList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-group-data?tabClass=objectsList&objdocId={feature_id}&registersId=36441')
            elif key == 'registersId' and value == 36453:
                landLinks = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&objdocId={feature_id}&registersId=36453')
                buildParts = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=buildParts&objdocId={feature_id}&registersId=36453')

            if isinstance(value, str):
                if len(value) == 10 and value[4] == '-' and value[7] == '-':
                    date_obj = datetime.strptime(value, '%Y-%m-%d')
                    formatted_date = date_obj.strftime('%d.%m.%Y')
                    result[key] = formatted_date
                elif len(value) == 20 and value[10] == 'T' and value[-1] == 'Z':
                    date_obj = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ')
                    formatted_date = date_obj.strftime('%d.%m.%Y')
                    result[key] = formatted_date
                elif isinstance(value, list):
                    result[key] = ', '.join(value) if value else None
                elif value not in [None, ""]:
                    result[key] = value
        
        result['coordinates'] = coordinates
    return result, result_parts_zu, objectsList, result_string, pomList, mashList, landLinks, buildParts, permissionType



async def main():
    result = await api_nspd_json("52:51:0010002:1139")
if __name__ == '__main__':
    asyncio.run(main())

地籍号 52:51:0010002:1139 是一栋包含房屋的公寓楼。主要 API 是

code = code.replace(':', '%3A')
    url = f'https://nspd.gov.ru/api/geoportal/v2/search/geoportal?thematicSearchId=1&query={code}'

您可以通过它从 NSPD 中获取其他数据: 在此处输入图片描述

在代码中是这样写的(我马上就说这些并不是所有的链接,将来我会“剪切”代码):

if category_id == 36368:  # ЗУ
            result_parts_zu = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landParts&categoryId={category_id}&geomId={feature_id}')
            objectsList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-group-data?tabClass=objectsList&categoryId={category_id}&geomId={feature_id}')
        elif category_id == 36384:  # ОНС
            landLinks = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&categoryId=36384&geomId={feature_id}')
        elif category_id == 36383:  # Сооружения
            pomList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&categoryId=36383&geomId={feature_id}')
            mashList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=buildParts&categoryId=36383&geomId={feature_id}')
            buildParts = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=permissionType&categoryId=36383&geomId={feature_id}')
        elif category_id == 36369:  # ОКС
            permissionType = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=permissionType&categoryId=36369&geomId={feature_id}')

        for key, value in properties.items():
            if key == 'registersId' and value == 36440:
                result_string = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=compositionLand&objdocId={feature_id}&registersId=36440')
            elif key == 'registersId' and value == 36441:
                landLinks = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&objdocId={feature_id}&registersId=36441')
                objectsList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-group-data?tabClass=objectsList&objdocId={feature_id}&registersId=36441')
            elif key == 'registersId' and value == 36453:
                landLinks = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&objdocId={feature_id}&registersId=36453')
                buildParts = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=buildParts&objdocId={feature_id}&registersId=36453')

通过地籍编号 52:51:0010002:1139,我找到了键(如果存在)'registersId'等于 36441,在这种情况下,请求是通过链接发出的

elif key == 'registersId' and value == 36441:
                landLinks = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-values-data?tabClass=landLinks&objdocId={feature_id}&registersId=36441')
                objectsList = await get_tab_values(f'https://nspd.gov.ru/api/geoportal/v1/tab-group-data?tabClass=objectsList&objdocId={feature_id}&registersId=36441')

并通过引用objectsList应该提供与建筑物相关的处所的信息(它们位于NSPD本身中),但它在代码中给出了它

async def get_tab_values(url):
            tab_data = await fetch_data(url, client)
            print(tab_data)

由于某种原因,一开始为 None(第一次请求时出现错误 505),然后(好像在重复连接时)数据本身 {'title': '对象列表', 'object': [{'title': '房间(数量)', 'value': ['4']}, {'title': '停车位(数量)', 'value': ['']}, {'title': '房间(列表)', 'value': ['52:51:0010002:1374', '52:51:0010002:1375', '52:51:0010002:1376', '52:51:0010002:1377']}, {'title': '停车位(列表)','值':['']}]}。这个 None 破坏了一切,我通过明确的等待、通过反复的重新连接来处理它,但它仍然先给出 None 然后再给出数据。

None 如何处理?请帮忙

后来我制作了一个带有内联按钮和回调的机器人,当请求时,它不会显示带有房间的按钮(因为这个 None )

python
  • 1 个回答
  • 95 Views
Martin Hope
Александр
Asked: 2025-02-12 10:52:09 +0000 UTC

队列中的数据已损坏。自由RTOS

  • 7

大家好!问题是这样的:我在 CubeMX 中创建了一个队列,并使其与我的结构大小相同sizeof( params )。

#define ITEM_SIZE_QUEUE_1       sizeof( params )

以下是结构和列表。

typedef enum  {
    L1 = 1,
    L2 = 2,
    L3 = 3
} phaseId;

typedef struct {
    float avg;
    float maxImp;
    float minImp;
    float rms;
    float eff;
    phaseId id;
} params;

队列:

  /* definition and creation of xQueueDMtoSD */
  osMessageQStaticDef(xQueueDMtoSD, 640, ITEM_SIZE_QUEUE_1, xQueueDMtoSDBuffer, &xQueueDMtoSDControlBlock);
  xQueueDMtoSDHandle = osMessageCreate(osMessageQ(xQueueDMtoSD), NULL);
osMessageQId xQueueDMtoSDHandle;
uint8_t xQueueDMtoSDBuffer[ 640 * sizeof( ITEM_SIZE_QUEUE_1 ) ];

我从任务中将数据发送到队列,并相应地发送结构。

void vFunDataManager(void const * argument)
{
  /* USER CODE BEGIN vFunDataManager */
    params queue1;
    params queue2;
    params queue3;
  /* Infinite loop */
    for (;;) {
        if (xQueueReceive(xQueueADCHandle, &copy1, portMAX_DELAY) == pdTRUE) {
            //
                /**
                 * Отправка очереди в задачу vSD
                 */

                if (uxQueueSpacesAvailable(xQueueDMtoSDHandle) > 0) {
                    if (xQueueSend(xQueueDMtoSDHandle, &queue2, portMAX_DELAY) != pdTRUE) {
                        dbF++;
                        osDelay(100);
                    }
                } else {
                    osDelay(100);
                }
            }
        } else {
            dbF++;
        }
        osDelay(10);
    }
  /* USER CODE END vFunDataManager */
}

在另一个任务中,我从队列接收数据。

void vSD(void const * argument)
{
  /* USER CODE BEGIN vSD */
  params queue1;
  /* Infinite loop */
  for(;;)
  {
    if (xQueueReceive(xQueueDMtoSDHandle, &queue1, portMAX_DELAY) == pdPASS) {
        if (osMutexWait(xMutexSPIHandle, osWaitForever) == osOK) {
            writeArchive(&queue1);
        }
        osMutexRelease(xMutexSPIHandle);
    }
    osDelay(10);
  }
  /* USER CODE END vSD */
}

并且在 vSD 任务中队列中的数据已被损坏。由于某种原因,队列中存在不同的数据。不是那些被发送的。
数据发送 数据接收 中断设置 SYS 定时器
数据已发送

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

c
  • 1 个回答
  • 50 Views
Martin Hope
Qwertiy
Asked: 2025-02-12 06:09:22 +0000 UTC

当鼠标移动到相邻元素时不隐藏元素

  • 10

当您将鼠标悬停在元素 B 上时,元素 C 会出现。当鼠标不在 B 或 C 上时,它会消失。如何让 C 在鼠标位于 A 上时继续显示,但如果鼠标仅在 A 上,而之前未在 B 上,则 C 本身不会出现?

main {
  display: inline-flex;
  position: relative;
  font-size: 3em;
  outline: 1px dotted red;
}

div {
  padding: 1em;
}

.b {
  background: antiquewhite;
}

.c {
  visibility: hidden;
  position: absolute;
  left: 100%;
  background: linear-gradient(to right, silver, gray);
}

.b:hover + .c, .c:hover {
  visibility: visible;
}
<main>
  <div class="a">A</div>
  <div class="b">B</div>
  <div class="c">C</div>
</main>

css
  • 1 个回答
  • 40 Views
Martin Hope
NicKai
Asked: 2025-02-12 05:00:48 +0000 UTC

Termux:默认打开文件夹

  • 6

我不确定这是否可能,但我想知道。是否可以这样设置,以便当我登录时,能够立即进入我需要的目录?

cd 存储/文档/主要/

这样您就不必每次都输入此命令,而是在登录时立即进入主文件夹。有这种可能吗?

termux
  • 1 个回答
  • 17 Views
Martin Hope
Иван Максимович
Asked: 2025-02-12 04:13:34 +0000 UTC

根据条件将字典键收集到单独的列表中

  • 6

有一本字典。这些键与示例中的不同。字典中的含义要么是字典,要么是文本。

有必要在单独的列表中收集从根到具有文本值的键的键分支。带有键的列表也需要收集到最终列表中。

我看到了一个使用递归的实现。我理解,使用班级检查功能是必要的。但我不明白具体怎么做。

以下是我想做的事情:

dict1 = {'1':{'2':{'3':'text'},'4':{'5':{'6':'text'},'7':'text'}},'8':{'9':{'10':'text'}}}
    
general_list = []
def search_keys(dict1, list_key=[]):
    for key, value in dict1.items():
        list_key.append(key)
        if isinstance(value, dict):
            search_keys(value, list_key)
        elif isinstance(value, str):
            general_list.append(list_key.copy())
            list_key.clear()
    return general_list
    
print(search_keys(dict1))

第一遍收集钥匙。从第二个开始,一切都出错了:

[['1','2','3'],['4','5','6'],['7'],['8','9','10']]

您应该获得以下内容:

[['1','2','3'],['1','4','5','6'],['1','4','7'],['8','9','10']]
python
  • 1 个回答
  • 36 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5