Android app Statistics Finland API


Project Assignment
Last changed 25.3.2024. Change: added code example links to the end of Introduction

Introduction
The purpose of the project assignment is to build an app, which will show you various information about Finnish cities/municipalities.

The app will be an Android app, where the user can input search conditions via the UI and see the results is an easily understandable form.

The project assignment should be implemented in a group of 1-2 people.

There are two deliverables in this assignment:
-Implementation plan, see description and details in Moodle: https://moodle.lut.fi/mod/assign/view.php?id=1215630
-Final submission
oThe app itself, link to source code repository
oDocumentation (link to e.g. REAME.md or PDF in source code repository)
oVideo presenting how your application works.

Deadline for returning the implementation plan is 7.4.2024 at 23.59.
Deadline for the project is 23.4.2023 a 23.59.

See “Project Assignment” section in Moodle for more information about how to register your team for the assignment and how to submit the assignments.

Here are some code examples to get you started:
How to access Statistics Finland API endpoints in a plain Java app: https://version.lab.fi/Katja.Karhu/oop-api-and-json-example
How to integrate API access (examples: Statistics Finland and OpenWeather) to an Android application: https://version.lab.fi/Katja.Karhu/oop-android-api-example


Requirements

The basic requirement is to fetch data via Rest APIs and show data in the UI of the Android app. 

The user should be able to search for information using the name of the city/municipality. 

The app should display at写 Android app Statistics Finland API  least the population and change (increase/decrease) in population (Statistics Finland/Tilastokeskus: 12dy), workplace self-sufficiency (Statistics Finland/Tilastokeskus: 125s) and employment rate (Statistics Finland/Tilastokeskus: 115x).

You should show this information to a user in a nice user readable format.

When you meet these basic requirements, you will get 10 points. To fulfil the minimum score of 15 points, you will also need to add elective features.


Figure 1 presents an example class diagram, that you can modify and expand freely. The idea here is that MunicipalityData contains all the data fetched from the municipality/city. 

Fetching the data is done by DataRetriever, which can find data from various sources.
Quiz (not mandatory, but an example of how you could present the data to user) utilizes the data from the municipality and forms a 10-question quiz with different answer.

This is one way of utilizing the data sources in the app. For example, the more data sources you have, the more classes you will need in the class diagram.

Note that the job of Activity classes is not to manipulate the data, they should just display it. Fetching and parsing the data are done the ”normal” Java classes, not Android classes.


Figure 1: Example class diagram, feel free to use it and modify it according to your needs. Pro-tip: Umbrello can generate Java-code from the class diagram, and you can use it in your app. Umbrello-version of this class diagram can be downloaded here: https://www.dropbox.com/scl/fi/cvavj734j0zo1p0014dzn/ht.xmi?rlkey=2wh7jtbeydz3kpqbakstky3w5&dl=0

Data Sources
Here is a list of a few data sources you can use. There are also other open Rest APIs offering data, you are free to use any of those as well.

●Statistics Finland (Tilastokeskus): https://pxdata.stat.fi/PxWeb/pxweb/en/StatFin/
●OpenWeather (requires free registration): https://openweathermap.org/api
○Geocoding API (fetch latitude and longitudine via city name): https://openweathermap.org/api/geocoding-api
○Current Weather with latitude and longitude as parameters: https://openweathermap.org/current
●Finnish Patent and Register Office (PRH):  https://avoindata.prh.fi/tr_en.html
●Finnish Institute for Health and Welfare (THL) https://thl.fi/en/web/thl/statistics-and-data/data-and-services/open-data
●Traficom: https://trafi2.stat.fi/PXWeb/pxweb/en/TraFi/
●Fintraffic: https://www.digitraffic.fi/en/
●Wikipedia: https://api.wikimedia.org/wiki/Getting_started_with_Wikimedia_APIs
●Finnish open data listing:
○https://www.avoindata.fi/en

What can you find from the databases on municipality level? Examples of the data you can find in the APIs listed above:
●How many percent of the cars registered in a municipality were fully electric during the previous month?
●How many COVID deaths are listed in the municipality?
●What the weather is like, today, tomorrow, day after tomorrow?
●What are the political parties in the council of the municipality?
●How many companies were registered to the municipality during the past 12 months?
●Road camera feed from the municipality (if there is a camera)?

User Interface Prototypes

You can design any kind of UI you want, but here are a few examples how you can do it:


General Requirements

To pass the assignment you will need at least 15 points. Maximum points you can get from the project assignment is 30.

When you fulfil the mandatory requirements, you will get 10 points.

You will get extra points when you implement elective features according to the table below. 

You can lose points if you have bugs or unwanted material included in the assignment, see the end of the table below.


Requirement    Description    Points
Object-oriented code    App is coded according to object-oriented paradigm    Mandatory
Code, comments and related documentation are in English    Application code, comments and documentation are in English.    Mandatory
App works in Android    Application works in Android devices, and it is coded in Android Studio    Mandatory
Application includes basic functionality    App covers all the functionality defined earlier in this document. You are displaying information on Finnish municipalities    Mandatory
Documentation    With the code, you must also submit the link to documentation (it can be included in the source code repository as for example README.md file or PDF) 

Documentation must include the following things: 
-Class diagram (you do not need to include Android classes, such as Activities in the class diagram)
-Division of labour between team members (who did what)
-Features that were implemented (according to this table here, with the points you are aiming for)
-General description of the work
-Installation instructions (in case you need to do something else than just run the app in Android Studio)    Mandatory
You are fetching data via API    You are using the Statistics Finland API (https://pxdata.stat.fi/PxWeb/pxweb/en/StatFin/) to fetch the data mentioned earlier in this document.    Mandatory
        
RecycleView    You are using RecycleView component in listing data    3
You are displaying images    For example, for weather predictions you are showing icons based on the prediction (sun icon when it is sunny, etc), or a different icon based on the size of the municipality    2
There is more than one data source    In addition to Statistics Finland, the program will fetch data from another API and it’s displayed to the user    3
There are more than two data sources    In addition to Statistics Finland, and second data source, the program will fetch data from a third API and it’s displayed to the user    2
There are more than three data sources    In addition to Statistics Finland, second, and third data source, the program will fetch data from a fourth API and it’s displayed to the user    1
Statistics    Program internal statistics about which municipalities the user searched, and the user can quickly see and select from e.g. five last municipalities they have searched.    2
Comparing municipalities    You can compare the information from two municipalities side by side. You can for example see if Savonlinna has more residents/jobs/rain than Rovaniemi    3
Quiz    The app will generate ten questions about the data in municipality with true/false options. The user can answer questions (all questions can be listed in one view, or one by one in their own view). In the end user is shown the final score and how well they did in the quiz.    4
Fragments    You have used Fragment (reusable UI components) in your work. More information: https://developer.android.com/guide/fragments
    4
Data visualization    For example, you show the change in population as graphs instead of plain numbers.

Options for implementing data visualization can be found in:
 https://github.com/patrykandpatrick/vico, https://github.com/PhilJay/MPAndroidChart, https://github.com/AnyChart/AnyChart-Android    5
Game    What if when starting the app, the user must start a job as the mayor of the municipality? How would you use your budget? Could you get more residents or jobs to your municipality and compete with other municipalities? Also in this case, you need to fetch basic data from Statistics Finland, but you can build on top of that. Be careful when choosing this option, so that you are not too ambitious, and the project will be too big. Look into “Minimum Viable Product” concept, and evaluate how you can make a big impact with smallest number of features (that still fulfil the mandatory requirements)    X (suggest your own score)
        
Feature X    Any other feature you come up with! Suggest a score between 0 to 5 in the project documentation    0 – 5
        
Bugs    You loser points if the app has bugs/crashes unexpectedly    -1 – -5 / bug
        
App includes trash, hate speech racism, or other unwanted content    You lose points, if there is
 WX:codinghelp

内容概要:本文提出了一种基于改进扩散模型的高海拔地区新能源高波动出力场景生成方法,并提供了完整的Python代码实现。该方法针对高海拔地区风能、光伏等新能源出力波动剧烈、不确定性高的特点,通过优化扩散模型的结构与训练策略,有效捕捉历史数据的概率分布特征与时序相关性,从而生成高质量、多样化的出力场景。文中详细阐述了模型的数学推导、网络架构设计、损失函数优化及采样算法改进,并通过实验证明其在拟合精度、场景多样性与稳定性方面优于传统生成模型,为电力系统在高比例新能源接入下的规划、调度与风险评估提供了可靠的场景输入支持。; 适合人群:具备一定Python编程能力和机器学习基础,从事新能源发电预测、电力系统分析、智能优化、场景生成等方向研究的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①用于高海拔地区风电、光伏出力的不确定性建模与多场景生成;②支撑含高渗透率新能源的电力系统随机优化调度、鲁棒决策与风险评估;③为相关学术研究、论文复现与算法改进提供可运行的技术方案与代码基础; 阅读建议:建议读者结合所提供的完整资源(代码、数据集、说明文档)进行实践操作,重点关注扩散模型的前向加噪与反向去噪过程的设计细节,以及如何将其适配于新能源时序数据的生成任务,通过参数调优与对比实验深入理解模型的生成机制与性能边界。
内容概要:本文围绕基于静态约束法的配电网电动汽车接入容量评估展开研究,提出了一种在新型电力系统背景下评估主动配电网对电动汽车承载能力的方法。研究通过构建数学模型,结合潮流计算与关键约束条件(如电压越限、线路过载等),量化分析配电网可承受的最大电动汽车充电负荷容量,旨在识别规模化电动汽车接入带来的潜在运行风险,并为电网规划与运行提供科学依据。文中配套提供了完整的Matlab代码实现,便于仿真验证与结果复现。此外,该研究与分布式光伏承载力评估、电动汽车可调能力分析等方向形成技术联动,展现了多主题协同的研究体系。; 适合人群:具备电力系统分析基础理论知识及Matlab编程能力的高校研究生、科研机构研究人员,以及从事新能源并网、智能配电网规划与运行等相关领域的工程技术人员。; 使用场景及目标:①用于学术研究中的模型复现与论文撰写支撑;②评估实际配电网中电动汽车大规模接入的可行性与安全边界,指导充电基础设施布局;③作为高校教学案例,帮助学生深入理解电网承载力评估的核心原理、建模方法与仿真技术; 阅读建议:建议结合文中提及的相关研究方向(如二阶锥规划、多面体聚合方法等)进行对比学习,充分利用所提供的Matlab代码与网盘资料开展仿真实验,重点关注约束条件的设定逻辑与潮流计算模块的实现细节,以深化对评估模型机理与工程应用价值的理解。
内容概要:本文围绕“考虑隐私保护的分布式联邦学习电力负荷预测研究”展开,提出了一种基于Python实现的联邦学习框架,旨在解决居民或行业电力负荷预测中用户电表数据隐私泄露的风险。该研究通过构建分布式机器学习模型,使各参与方在不共享原始数据的前提下协同训练全局模型,有效实现了数据“可用不可见”。文中详细阐述了联邦学习的整体架构设计、本地模型训练流程、参数加密传输与安全聚合机制,并结合差分隐私等技术进一步增强系统的隐私保护能力。同时,研究利用真实电力负荷数据集进行了实验验证,展示了方法在预测精度与隐私保障之间的良好平衡,并提供了完整的代码实例与复现指南,便于后续研究与应用拓展。; 适合人群:具备一定机器学习基础和电力系统背景知识,从事智慧能源、隐私计算或人工智能相关方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 实现跨区域、跨主体的电力负荷协同预测,打破数据孤岛;② 在确保用户用电数据隐私安全的前提下提升负荷预测准确性;③ 推动联邦学习在智能电网、需求响应、虚拟电厂等场景中的实际部署与应用。; 阅读建议:建议结合文中提供的Python代码与网盘资料进行动手实践,重点关注联邦学习的通信轮次设计、模型聚合算法(如FedAvg)的实现细节以及差分隐私噪声添加策略,深入理解其对模型性能与隐私强度的影响,为进一步优化与创新奠定基础。
VDA_Band_19.1_3rd edition_2026 English Inspection of Technical Cleanliness 内容概要:本文档为德国汽车工业协会(VDA)发布的第三版《技术清洁度检验:功能相关汽车部件的颗粒污染检测》(VDA 19.1),系统规范了汽车行业中零部件技术清洁度的检测方法与流程。文件涵盖从取样、提取、过滤到分析的全流程标准化操作,重点更新了干法提取(如 Stamp Test 和刷吸法)、小于50µm颗粒的检测、光学子系统和SEM/EDX标准分析方法,并引入统一材料分类体系以提升结果可比性。同时明确了“标准分析”与“自由检验”的区别,前者用于高兼容性检测,后者允许客户与供应商协商定制参数。文档还强化了对非可测组件的技术清洁保障、测量不确定度评估及方法验证的要求,并提供了多个实际案例支持应用落地。; 适合人群:适用于汽车制造业中从事质量控制、工艺开发、供应商管理及相关检测实验室的技术人员和管理人员,尤其适合具备一定质量管理或洁净度检测基础的专业人员。; 使用场景及目标:①用于制定和执行零部件清洁度检测标准;②指导 incoming/outgoing 检验及生产过程监控;③支持失效分析与质量改进项目;④作为企业内部审核和技术交流的依据; 阅读建议:建议结合VDA 19.2及其他相关标准配套使用,重点关注各章节中的起始参数设定、方法选择逻辑及附录中的检查表示例,在实际操作中同步开展方法验证与人员培训,确保检测结果的有效性和可追溯性。
内容概要:本研究聚焦于电动汽车(EV)作为灵活可调资源的能力评估,提出了一种基于多面体聚合与闵可夫斯基和的数学建模方法,用以精确刻画大规模电动汽车集群的可调能力范围。通过将单辆电动汽车的充放电行为抽象为几何空间中的多面体可行域,并利用闵可夫斯基和实现对群体可行域的高效聚合,从而构建出能够反映整体调节潜力的统一数学表达。该方法在Matlab平台上实现了完整的仿真代码,支持对不同场景下电动汽车集群的上、下调能力进行量化评估,为电网调度、需求响应及电力市场机制设计提供了理论依据与工具支撑。; 适合人群:具备电力系统分析、优化理论及Matlab编程基础的研究生、科研人员及从事新能源、智能电网相关工作的工程师。; 使用场景及目标:①用于评估大规模电动汽车接入背景下系统的灵活性资源潜力;②支撑含高比例可再生能源的电力系统调度与规划决策;③为需求响应项目中EV聚合商参与电力市场提供能力申报的技术手段;④作为教学案例帮助理解集合运算在电力系统中的应用。; 阅读建议:学习者应结合Matlab代码深入理解多面体建模与闵可夫斯基和的实现细节,建议从单车模型入手逐步过渡到集群聚合,并尝试调整参数(如数量、SOC分布、功率限制)观察聚合结果的变化,以增强对模型特性的掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值