Ireland Property Analytics — 项目完整说明文档
作者:Fan Yang | 网站:property.fanyang.me | 更新日期:2026-03-31
目录
1. 项目是什么
背景和目的
爱尔兰近年来吸引了大量海外华人投资者的关注。但是,市面上大多数爱尔兰房产数据工具要么是英文的、要么需要付费、要么数据不透明。这个项目的目标是:
为海外华人投资者提供一个免费、透明、数据驱动的爱尔兰房产分析平台。
项目做了什么
- 从爱尔兰政府公开数据库下载了约77.5万条房产交易记录
- 经过5层数据清洗,得到699,653条有效交易
- 将这些数据与13个其他数据源交叉验证,补充租金、人口、犯罪率、按揭等维度
- 把所有分析结果预先计算好,生成JSON文件
- 建设一个完全静态的双语(中英文)网站,让用户无需任何专业知识即可查询数据
目标用户
主要是:正在考虑购买爱尔兰房产出租(Buy-to-Let)的海外华人投资者。他们关心的核心问题是:哪个郡的租金回报率最高?买了之后每年能赚多少钱?
2. 技术架构
整体结构
用户浏览器
↓ HTTP请求
Nginx Web服务器(服务器 91.99.111.153)
↓ 直接返回静态文件
/opt/www/irelandproperty/
├── index.html ← 首页
├── query.html ← 收益率查询页
├── calculator.html ← 净回报计算器
├── mortgage.html ← 按揭市场页
├── map.html ← 地图页
├── about.html ← 数据说明页
├── i18n.js ← 双语翻译文件
├── favicon.svg ← 网站图标
├── og-image.png ← 社交媒体分享图
├── sitemap.xml ← 搜索引擎地图
└── data/ ← 所有数据(JSON格式)
没有后端服务器,没有API,没有数据库查询。所有数据在部署前已经计算好,保存为JSON文件。用户打开页面时,浏览器直接读取这些JSON文件,在浏览器里用JavaScript展示。
为什么选择纯静态架构
- 速度快:没有数据库查询的等待时间
- 成本低:不需要后端服务器,只需要最便宜的VPS
- 可靠性高:没有服务器崩溃、数据库宕机的风险
- 安全:没有任何用户输入直接碰数据库
技术栈
| 层次 | 技术 |
|---|---|
| 数据库(离线使用) | PostgreSQL(在服务器上,只在生成数据时用) |
| 数据处理 | Python(pandas、psycopg2) |
| 前端框架 | 原生HTML + CSS + JavaScript(无React/Vue等框架) |
| 地图 | Leaflet.js 1.9.4(开源地图库) |
| 图表 | Chart.js 4.4.0(开源图表库) |
| 字体 | Google Fonts(Playfair Display + DM Sans) |
| Web服务器 | Nginx |
| 统计分析 | Google Analytics 4(追踪ID:G-BWR3108MN4) |
服务器信息
- IP地址:91.99.111.153
- 域名:property.fanyang.me
- 网站根目录:
/opt/www/irelandproperty/ - 数据目录:
/opt/www/irelandproperty/data/
3. 数据库
数据库的作用
PostgreSQL数据库只在离线数据处理阶段使用,不对外开放,不参与任何网站请求。它的作用是:存储原始PPR数据,运行清洗和分析SQL,生成最终的JSON文件。
核心表:property_sales
这是项目最重要的表,存储从爱尔兰PSRA(财产服务监管局)下载的所有房产交易记录。
| 字段名 | 类型 | 含义 |
|---|---|---|
id |
integer | 自增主键 |
address |
text | 房产地址(完整地址字符串) |
date_clean |
date | 成交日期(已清洗为标准date类型) |
price |
numeric | 成交价格(欧元,原始值,未加VAT) |
description |
text | 物业类型描述,如 “New Dwelling house / Apartment” 或 “Second-Hand Dwelling house /Apartment” |
vat_exclusive |
boolean | 是否为不含VAT价格(新建住宅通常为true) |
not_full_market |
boolean | PSRA标记:是否为非市场价交易(家庭内部转让、破产出售等) |
county |
text | 所在郡(从地址解析得出) |
eircode |
text | 爱尔兰邮政编码(仅2021年后数据有) |
表的规模:约 775,000 行,永不修改(只读)。
核心视图:clean_residential_sales
这是建立在 property_sales 之上的数据库视图(View)。
什么是视图:视图不存储数据,它是一个保存好的SELECT查询语句。每次查询视图时,数据库实时执行那个查询。对于使用者来说,视图看起来就像一张表。
视图的作用是对原始数据应用5层过滤,只保留有意义的市场交易。详细过滤逻辑见第7章算法说明。
过滤结果:从 ~775,000 行 → 保留 699,653 行
其他辅助表/数据
除了PPR数据,服务器数据库里还有从其他来源导入的辅助数据,用于生成各JSON文件(如人口数据、犯罪数据等)。这些数据的来源见第5章。
4. 数据文件(JSON)
这些文件全部存放在 /data/ 目录下,是网站的"血液"。
4.1 county_stats.json
用途:核心文件,存储26个郡的综合统计数据
格式:数组,每个元素代表一个郡,共26条
字段说明:
| 字段 | 示例值(Louth郡) | 含义 |
|---|---|---|
county |
“Louth” | 郡名 |
ppr_median_price |
321585.0 | PPR数据库中的中位成交价(欧元,VAT调整后) |
tx_count |
3752.0 | 2025年交易笔数 |
daft_rent |
1722.0 | Daft.ie平台两居室平均月租金(欧元) |
daft_room_rent |
758.0 | Daft.ie平台单间平均月租金(欧元) |
rent_yoy |
3.8 | 租金同比增长率(%,year-over-year) |
hap_couple |
480.0 | HAP补贴上限:夫妻(欧元/月,无子女) |
hap_family |
660.0 | HAP补贴上限:家庭(欧元/月,有子女) |
hap_single |
460.0 | HAP补贴上限:单身(欧元/月) |
region |
“Leinster” | 所在省份(Leinster/Munster/Connacht/Ulster) |
rtb_rent |
1308.0 | RTB登记租金(欧元/月,政府数据) |
daft_asking_price |
190000.0 | Daft.ie挂牌要价(欧元) |
price_per_sqm |
3277.0 | 每平方米价格(欧元) |
gross_yield_daft |
10.88 | 毛租金收益率——Daft版本(%) |
gross_yield_ppr |
6.43 | 毛租金收益率——PPR版本(%) |
为什么有两个收益率:Daft收益率用的是挂牌要价和挂牌租金(反映市场预期),PPR收益率用的是实际成交价和RTB登记租金(反映真实交易)。两者差距有时很大,建议参考PPR版本。
4.2 dublin_postcodes.json
用途:都柏林22个邮区(D1-D24,除D19/D21/D23之外)的详细数据
格式:对象,键为邮区名(如 “Dublin 2”),值为该邮区数据
每个邮区包含:
trends:按卧室数量(1-5床)分类的季度租金趋势,从2018Q1到2025Q2,包含每季度租金和同比增长率latest:各卧室数量的最新季度租金ppr:PPR成交数据(中位价、样本量)gross_yield_2bed:两居室毛收益率(%)
数据量:每个邮区约30个季度 × 5种卧室数量 = 约150条时间序列数据点
4.3 rent_trends.json
用途:41个地点(26个郡 + 15个城市/地区细分)的季度租金趋势
格式:对象,键为地名,值为数组,每个元素 {q: "2018Q1", rent: 1561}
覆盖时间:2018Q1 到 2025Q2,共约30个季度
用于:Query页的租金趋势折线图
4.4 ber_county.json
用途:55个地区的建筑能源评级(BER)分布数据
格式:对象,键为地区名(包含郡级和都柏林邮区级),值包含:
rating_dist:各BER等级(A1到G)的房屋数量avg_floor_sqm:平均建筑面积(平方米)avg_year_built:平均建造年份total_rated:已评级总数
BER是什么:Building Energy Rating,类似中国的建筑节能标识。A1最好(最节能),G最差(最费能)。买房前看BER评级可以判断供暖成本。
4.5 cso_population.json
用途:26个郡的人口数据(来自爱尔兰中央统计局CSO)
格式:对象,键为郡名,值包含:
pop_2016:2016年人口pop_2022:2022年人口growth_pct:增长率(%)
示例(Dublin):人口从1,273,069增至1,458,154,增长14.5%
4.6 cso_vacancy.json
用途:26个郡的房屋空置率(CSO 2022年普查数据)
格式:对象,键为郡名,值为空置率百分比(如 Dublin: 5.6)
用于:净回报计算器中"空置率"滑块的默认值(选择郡后自动填入该郡的真实空置率)
4.7 cso_completions.json
用途:26个郡2022-2024年的住宅竣工量
格式:对象,键为郡名,值包含:
completions_2022、completions_2023、completions_2024:各年竣工套数avg_annual:三年平均
用于:地图页的"新增供给"指标;Query页的供给分析板块
4.8 cso_planning.json
用途:26个郡2022-2024年的住宅规划许可数量(CSO BHA14数据)
格式:与 cso_completions.json 结构相同
用于:地图页的"规划管道"指标(规划许可是竣工的领先指标,通常提前18-24个月)
4.9 cso_crime.json
用途:26个郡的犯罪统计数据(CSO CJQ06数据)
格式:对象,键为郡名,值包含:
crimes_2022、crimes_2023、crimes_2024:各年犯罪记录数avg_annual:三年平均per_1000_pop:每千人犯罪率
注意:爱尔兰有28个警察区(Garda Division),不完全对应26个郡。跨郡的警察区(如Cavan/Monaghan、Sligo/Leitrim等)按人口比例拆分,这是估算值不是精确值。
4.10 hap_county.json
用途:26个郡的HAP租金补贴上限
什么是HAP:Housing Assistance Payment,即爱尔兰政府对低收入家庭的租金补贴。政府直接把钱打给房东,房东接受HAP租客就相当于有政府托底。对投资者来说,HAP上限是"政府认可的最低可接受租金"。
格式:对象,键为郡名,值包含:
single:单身人士HAP上限(欧元/月)couple:夫妻(无子女)HAP上限couple_1child:夫妻1孩HAP上限couple_2children:夫妻2孩HAP上限couple_3children:夫妻3孩HAP上限
示例(Cork):单身€550,夫妻€650,夫妻1孩€900
4.11 ida_fdi.json
用途:26个郡的外资投资(FDI)吸引力数据
什么是IDA:Industrial Development Authority,爱尔兰工业发展局,负责招商引资。外资多的地方就业机会多,租房需求强。
格式:对象,键为郡名,值包含:
tier:等级(hub核心枢纽 / regional区域中心 / emerging发展中)site_visits_2025:2025年潜在投资者考察次数ida_jobs_est:IDA支持企业的就业人数估算note:重要外资企业备注(如都柏林:“Google, Meta, Microsoft, Pfizer HQs”)
4.12 mortgage_data.json
用途:爱尔兰按揭市场历史数据(来自BPFI)
格式:对象,包含4个子键:
drawdowns:季度按揭提款数据,64条记录(2010Q1-2025Q4)- 每条:
year、quarter、ftb_count(首次置业者数量)、mover_count(换房者)、ril_count(投资者)、total_count、ftb_pct(首置占比%)、total_value_m(总金额百万欧元)、ftb_avg_loan(首置平均贷款额)、total_avg_loan(总平均贷款额)
- 每条:
approvals_annual:年度按揭审批汇总,11条approvals_monthly:月度审批数据,22条updated:“2025Q4”(数据更新至此)
4.13 mortgage_rates.json
用途:利率历史数据
格式:对象,包含:
ecb_rate:ECB主要再融资利率的月度时间序列(2022-01 到 2026-01)ie_mortgage_rate:爱尔兰新增按揭平均利率的月度时间序列(同期)_latest:最新值摘要(ECB当前2.15%,爱尔兰按揭当前3.50%)
4.14 region_matrix.json
用途:将26个郡分组为5个区域,用于首页区域对比分析
5个区域:
- Dublin(都柏林)
- Leinster ex-Dublin(莱因斯特省,除都柏林外)
- Munster ex-Cities(芒斯特省,除科克市/利默里克市外)
- Connacht-Ulster ex-Galway(康诺特-阿尔斯特,除高威外)
- Other Cities(其他主要城市)
5. 数据来源(14个)
A组:房产交易数据
01. PSRA Property Price Register(PPR)
- 机构:爱尔兰财产服务监管局(Property Services Regulatory Authority)
- 内容:爱尔兰所有住宅类房产的成交记录(来源于买家缴纳印花税时的申报)
- 数据量:约775,000条,2010年至今
- 更新频率:持续更新(本项目数据截至2026年3月)
- 关键说明:
- 新建住宅价格不含VAT(VAT为13.5%),分析时需乘以1.135
- 家庭内部转让(如父母低价转给子女)已在清洗时过滤
- 机构批量购买整栋楼的记录已过滤(超过300万欧元)
02. Daft.ie Rental Reports
- 机构:Daft.ie(爱尔兰最大房产门户网站)
- 内容:各郡及都柏林邮区的按卧室数量分类的平均挂牌租金
- 数据时间:2024年Q4至2025年Q2(最新)
- 用于:Query页的"Daft租金"字段;毛收益率计算(Daft版本)
挂牌租金 vs 登记租金:挂牌租金(Daft)是房东标价,登记租金(RTB)是实际签约租金。挂牌租金通常略高,因为最终成交价可能下调。两者都有参考价值。
03. RTB/ESRI Rent Index
- 机构:爱尔兰租赁委员会(RTB)+ 经济社会研究所(ESRI)
- 内容:季度租金指数,按地区和卧室数量分类,基于所有在RTB登记的实际租赁合同
- 数据时间:2007年至今(本项目使用2018Q1-2025Q2)
- 用于:Query页的"RTB租金"字段;毛收益率计算(PPR版本);首页的租金收益率分析
B组:供给、人口与社会数据(均来自CSO——爱尔兰中央统计局)
04. SEAI BER Public Database
- 机构:爱尔兰可持续能源局(SEAI)
- 内容:所有已评级建筑的BER评级、面积、建造年份
- 数据量:1,353,297条评级记录
- 用于:首页的BER分析;Query页的能源评级信息
05. CSO Census 2022(人口普查)
- 内容:各郡2016年、2022年人口数量及增长率
- 用于:地图页人口指标;Query页人口分析板块
06. CSO Census 2022(空置率)
- 内容:各郡住宅空置率百分比
- 用于:净回报计算器中空置率滑块的默认值
07. CSO BHA04 — 住宅竣工量
- 内容:各郡2022-2024年新建住宅竣工套数
- 用于:地图页新增供给指标;Query页供给分析
08. CSO BHA14 — 住宅规划许可
- 内容:各地方政府2022-2024年批准的住宅规划许可数量
- 注意:31个地方政府 → 映射到26个郡(都柏林的4个地方政府数据合并)
- 用于:地图页规划管道指标;未来供给预测
09. CSO CJQ06 — 犯罪统计
- 内容:各警察区(Garda Division)2022-2024年犯罪记录总数
- 注意:28个警察区不完全对应26个郡,跨郡警察区按人口比例估算拆分
- 用于:地图页犯罪率指标(每千人);Query页安全评分
C组:经济与金融数据
10. IDA Ireland — 外资就业数据
- 机构:爱尔兰工业发展局
- 内容:各郡IDA支持企业的就业人数估算、考察次数
- 用于:Query页的FDI(外资)分析板块;地图页经济吸引力参考
11. BPFI Mortgage Market Data
- 机构:爱尔兰银行与支付联合会
- 内容:季度按揭提款量(按买家类型分)、月度审批量、平均贷款规模
- 时间:2010年至2025年Q4
- 用于:Mortgage Market页所有图表
12. ECB Key Interest Rates
- 机构:欧洲央行
- 内容:ECB主要再融资利率(MRR)月度序列(2022年至今)
- 当前利率:2.15%(2025年6月后)
- 用于:Mortgage Market页的利率环境图表
13. Central Bank of Ireland — Retail Interest Rates (B.3.1)
- 机构:爱尔兰央行
- 内容:爱尔兰新增住宅按揭月度平均利率(固定+浮动)
- 当前利率:3.50%(固定3.44%,浮动4.09%,截至2026年1月)
- 用于:Mortgage Market页的利率环境图表(与ECB利率对比显示)
D组:税务与法规
14. HAP限额 + LPT估值分档
- 机构:爱尔兰住房部(HAP数据)+ Revenue爱尔兰税务局(LPT数据)
- HAP内容:各郡按家庭规模分类的每月最高租金补贴金额
- LPT内容:地方物业税(Local Property Tax)按房产估值分档的年度税额(2022年重新估值)
- 用于:Query页的HAP限额展示;Net Return Calculator中的LPT计算
6. 网站页面详解(6个页面)
6.1 首页(index.html)
URL:https://property.fanyang.me/
定位:项目的门面,展示核心研究发现,吸引用户下载报告
页面结构与功能
① Hero区(顶部横幅)
- 标题:《70万条爱尔兰房产成交数据到底告诉了我们什么》
- 副标题解释数据来源和处理方式
- 两个"下载免费PDF报告"按钮(8页,无需注册)
② 数据统计展示区(5个KPI卡)
| 指标 | 数值 | 含义 |
|---|---|---|
| 已验证交易量 | 699,653 | 经过清洗的有效交易数 |
| 全国中位成交价2025 | 数据来自county_stats | 所有郡的中位价 |
| 2013年以来增长幅度 | 全国平均+134% | 从房价谷底算起 |
| 最高毛租金收益率 | ~7%(Longford) | 全国最高的郡 |
| 数据年限 | 15年 | 2010-2026 |
③ 12年增长排行图(Growth Section)
- 展示2013年(房价谷底)到2025年各郡的中位价格增长率
- 关键发现:都柏林排第24名(倒数第3),不是最快增长的地方
- Laois郡领先:从€93k涨到€298k,增长+220%
- Donegal垫底:+90%,是全国唯一低于+100%的郡
④ 租金收益率分析图(Yield Section)
- 展示25个郡的毛租金收益率排行(两居室公寓)
- 关键发现:都柏林排第7名,不是最高收益率的地方
- Longford最高:7.05%(房价约€190k,月租约€1,116)
- Kildare最低:4.28%(高房价相对于租金)
⑤ 方法论说明(Methodology Section)
- 简述数据来源:PPR(699,653条)、SEAI BER(1,353,297条评级)、RTB/ESRI租金指数
- 说明5层数据清洗:排除非市场交易、VAT调整、去重
⑥ 下载CTA区
- 再次展示PDF报告下载入口
- 联系邮件:imfan.yang@gmail.com
⑦ 免责声明区
- 4条声明:PPR数据说明、BER说明、RTB说明、总体免责
6.2 收益率查询页(query.html)
URL:https://property.fanyang.me/query.html
定位:用户最常用的工具,可以查询任意郡或都柏林邮区的详细数据
查询方式
方式一:按郡查询
从下拉列表选择26个郡中的一个,点击"查看详情"
方式二:按都柏林邮区查询
从下拉列表选择22个邮区(D1-D24,除D19/D21/D23),支持卧室数量选择(1-5床)
URL参数深链接:其他页面可以通过 ?county=Cork 这样的URL参数自动触发查询。例如,从地图页点击"查看完整详情",会跳转到 query.html?county=Cork 并自动显示Cork的数据。
郡级查询展示的数据
基本价格数据
| 字段 | 数据来源 | 含义 |
|---|---|---|
| 毛收益率(Daft) | Daft.ie挂牌价 ÷ Daft挂牌租金 | 以挂牌价购买、按挂牌租金出租的理论回报 |
| PPR中位价 | county_stats.json | 2025年实际成交价中位数 |
| Daft挂牌要价 | Daft.ie数据 | 当前市场挂牌价 |
| Daft两居室月租 | Daft.ie数据 | 当前市场挂牌租金 |
| RTB登记租金 | RTB/ESRI数据 | 已实际签约的平均租金 |
| 租金同比增长率 | Daft.ie报告 | 过去12个月租金涨幅 |
| HAP补贴上限 | 住房部数据 | 政府租金补贴上限(按家庭类型) |
租金趋势图
折线图展示2018Q1至2025Q2的季度租金变化,可以看到COVID期间租金下跌(2020-2021年)和随后的快速上涨。
供给分析板块
- 年均竣工量(套)
- 规划许可量(未来18-24个月的供给预测)
人口与就业板块
- 2022年人口及2016-2022年增长率
- IDA外资吸引力等级(Hub核心 / Regional区域 / Emerging发展中)
- IDA支持企业估计就业人数
- 主要外资企业名单
安全板块
- 每千人犯罪率(2022-2024年平均)
能源评级板块(BER)
- 已评级房产的BER等级分布(从A到G的比例)
- 平均建筑面积(平方米)
- 平均建造年份
都柏林邮区查询额外功能
- 选择卧室数量(1-5床)
- 显示该邮区该床型数量的季度租金趋势(2018-2025)
- 显示当季同比增长率
- PPR实际成交中位价(来自dublin_postcodes.json)
- 毛收益率
6.3 净回报计算器(calculator.html)
URL:https://property.fanyang.me/calculator.html
定位:最实用的工具,帮助投资者算出买了之后每年真正能到手多少钱(而不是表面上的租金回报率)
输入参数
| 参数 | 控件类型 | 默认值 | 说明 |
|---|---|---|---|
| 房产价格 | 数字输入框 | 无 | 欧元 |
| 月租金 | 数字输入框 | 无 | 欧元/月 |
| 所在郡 | 下拉选择(可选) | — | 选后自动填入该郡空置率 |
| 税务身份 | 单选按钮(3个) | 非居民20%预扣税 | 影响税率 |
| 管理费 | 滑块 0-20% | 10% | 支付给房产管理公司的费用 |
| 空置率 | 滑块 0-20% | 8% | 预计一年中无租客的时间比例 |
| 年度维修费 | 滑块 0-2% | 0.5%(房价的) | 预计修缮费用 |
税务身份说明:非居民-20%预扣税:在爱尔兰没有税务居留的投资者(如中国买家),租客或管理公司必须每月扣留20%的租金上缴税务局。这是最常见的情况。爱尔兰居民-标准税率20%:年收入在标准税率档内的爱尔兰居民爱尔兰居民-高税率40%:年收入超过标准税率上限的爱尔兰居民(高收入)
计算逻辑(详见算法M6)
计算器自动算出:
- 毛收益率:年租金 ÷ 房价
- 净收益率:扣除所有成本和税后净收入 ÷ 房价
并展示逐项明细:
年租金总额
(- 空置损失)
= 有效租金收入
(- 管理费)
(- 维修费)
(- 保险费) ← 固定值:€600/€800/€1,200(按房价段)
= 应税收入
(- 所得税)
(- 地方物业税LPT) ← 按Revenue 2022分档,约€90-€1,035/年
= 净年收入
净年收入 ÷ 房价 = 净收益率
RPZ提示框
页面底部有一个黄色警告框,提示爱尔兰的"租金限压区"(Rent Pressure Zone)制度:在大部分城市地区,每年租金涨幅不得超过2%。投资者不能随意提价。
6.4 按揭市场页(mortgage.html)
URL:https://property.fanyang.me/mortgage.html
定位:展示爱尔兰按揭市场的历史趋势,帮助投资者了解市场资金面
页面包含的图表和数据
图表一:季度按揭提款量(2010-2025)
- 柱状图,分首次置业者(FTB)、换房者(Mover)、投资者(RIL)三色堆叠
- 可以直观看到:2010-2011年金融危机后跌至低谷,随后逐年恢复
- 2025年Q4总按揭额达43亿欧元
图表二:月度审批量(2024-2025)
- 折线图,展示最近两年的月度按揭审批动态
图表三:首次置业者占比趋势
- 显示FTB占市场的比例变化
- 当前FTB约占按揭数量的62%(首置主导市场)
图表四:平均首置贷款规模趋势
- 展示首次置业者平均贷款金额从2010年约€201,516增长到2025年Q4约€323,871
图表五:利率环境(2022-2026)
- 双折线图:ECB基准利率 vs 爱尔兰新增按揭平均利率
- 展示2022年ECB从0%快速加息到4.5%,以及2024年底开始降息的过程
- 当前:ECB 2.15%,爱尔兰新增按揭 3.50%
KPI概览卡
| 指标 | 数值 |
|---|---|
| 首次置业者Q4 2025平均贷款 | €323,871 |
| Q4 2025总按揭放款 | €43亿 |
| 首置占比(按笔数) | ~62% |
| 当前新增按揭利率 | 3.50% |
6.5 地图页(map.html)
URL:https://property.fanyang.me/map.html
定位:用颜色深浅直观展示26个郡在各指标上的差异
技术实现
使用 Leaflet.js 1.9.4 渲染的交互式 Choropleth 地图(热力地图)。地图底图使用爱尔兰26个郡的GeoJSON多边形数据,根据选定指标的值用不同深浅的颜色填充每个郡。
可切换的6个指标
| 指标 | 颜色含义 | 数据来源 |
|---|---|---|
| 中位成交价 | 深绿=贵,浅绿=便宜 | PPR(county_stats.ppr_median_price) |
| 毛收益率 | 深绿=高收益,浅绿=低收益 | county_stats.gross_yield_daft |
| 人口增长 | 深绿=增长快,浅绿=增长慢 | cso_population.json |
| 新增供给 | 按年均竣工量 | cso_completions.json |
| 规划许可 | 按年均获批量 | cso_planning.json |
| 空置率 | 深色=空置多,浅色=空置少 | cso_vacancy.json |
| 犯罪率 | 深色=犯罪多(红色系),浅色=少 | cso_crime.json |
交互功能
- 点击郡:右侧弹出信息面板,显示该郡的多项指标摘要
- 信息面板内容:中位成交价、毛收益率、人口、竣工量、空置率、犯罪率
- "查看完整详情"链接:跳转到
query.html?county=郡名,自动触发该郡的详细查询 - 悬停提示:鼠标悬停时显示郡名和当前指标数值
6.6 数据与方法说明页(about.html)
URL:https://property.fanyang.me/about.html
定位:全面透明地展示数据来源和计算方法,建立用户信任
页面内容
数据来源区(14个来源卡,分4组)
- A组:房产交易(PPR、Daft、RTB)
- B组:供给/人口/社会(SEAI BER、CSO人口、CSO空置率、CSO竣工、CSO规划、CSO犯罪)
- C组:经济与金融(IDA、BPFI、ECB、爱尔兰央行)
- D组:税务与法规(HAP限额 + LPT分档)
每张数据源卡包含:机构名称、数据内容描述、时间范围、用于哪个页面、数据局限性警告、官方数据链接
方法论区(9个手风琴展开区,M1-M9)
见第7章详解。
7. 计算算法详解
M1:新建住宅VAT调整
问题背景:爱尔兰PPR数据中,新建住宅的成交价是"不含VAT"的价格(VAT为13.5%)。二手房免VAT,价格直接是全价。如果不处理,新建住宅价格看起来会比实际低13.5%。
解决方案:对所有标注为新建(description LIKE 'New%'且vat_exclusive = true)的交易,将价格乘以1.135。
新建住宅调整价 = 原始价格 × 1.135
二手住宅调整价 = 原始价格(不变)
M2:五层PPR数据清洗
从~775,000行 → 699,653行有效数据,依次过滤:
| 层次 | 规则 | 原因 | 去除数量 |
|---|---|---|---|
| 第1层 | 去掉价格低于€50,000的 | 家庭内部名义转让(€1转给子女等) | 少量 |
| 第2层 | 去掉价格高于€3,000,000的 | 机构批量购买整栋楼,245笔共€30.6亿,会拉高郡级中位数 | 245笔 |
| 第3层 | 去掉not_full_market = true的 |
PSRA已标记的非市场价交易(破产出售、社会住房转让等) | 33,301笔 |
| 第4层 | VAT调整(见M1) | 标准化新旧建筑价格 | 无删减,仅调整 |
| 第5层 | DISTINCT ON (address, date_clean)去重 |
同一地址同一日期的重复录入 | 870笔 |
SQL伪代码:
CREATE VIEW clean_residential_sales AS
SELECT DISTINCT ON (address, date_clean)
*,
CASE WHEN description LIKE 'New%' AND vat_exclusive
THEN price * 1.135
ELSE price END AS adjusted_price
FROM property_sales
WHERE price >= 50000
AND price <= 3000000
AND not_full_market IS NOT TRUE
ORDER BY address, date_clean, price ASC;
M3:中位价计算
为什么用中位数而不用平均值:
假设一个小县城有9套成交:€100k、€120k、€130k、€140k、€150k、€160k、€170k、€180k、€2,000k
- 平均值 = €350k(被最后一笔超豪华物业严重拉高)
- 中位数 = €150k(更能代表普通市场)
规则:
- 郡级:至少20笔交易才纳入统计
- 都柏林邮区:至少10笔交易才纳入统计
M4:都柏林邮区识别
难点:PPR数据里的地址是自由文本字符串,例如:"Flat 3, 45 Ranelagh Road, Ranelagh, Dublin 6",需要从中提取邮区编号"6"。
双重识别方法:
- 地址解析:用正则表达式在地址字符串里找"Dublin X"(X为数字)的模式
- Eircode前缀:2021年后的记录有Eircode,前两位是区域代码(如D01、D04),可以映射到邮区
有效都柏林邮区集合:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24}(没有D19、D21、D23这三个区)
覆盖率:双重方法将覆盖率从53.4%提升到65.8%
M5:毛租金收益率
毛收益率 = 一年如果全部出租能收到的租金 ÷ 买房的价格,以百分比表示。
两个版本:
# Daft版本(主要展示):用挂牌价和挂牌租金
gross_yield_daft = (Daft月租金 × 12) / Daft挂牌要价 × 100
PPR版本(次要展示):用成交价和登记租金
gross_yield_ppr = (RTB月租金 × 12) / PPR中位成交价 × 100
重要提示:毛收益率不是真实到手收益率。要扣除管理费、空置损耗、维修费、保险、税款后才是净收益率(通常比毛收益率低40-50%)。
M6:净回报计算(完整公式)
这是净回报计算器的核心逻辑:
① 年毛租金 = 月租金 × 12
② 空置损失 = 年毛租金 × 空置率
③ 有效年租金 = 年毛租金 - 空置损失
④ 管理费 = 有效年租金 × 管理费率
⑤ 年维修费 = 房产价格 × 维修费率
⑥ 保险费 = 固定值(按房价段:<€30万→€600,€30-60万→€800,>€60万→€1,200)
⑦ 应税收入 = 有效年租金 - 管理费 - 维修费 - 保险费
(注:管理费、维修费、保险费均为税前可抵扣费用)
⑧ 所得税 = 应税收入 × 税率
(非居民:20%,标准税率:20%,高税率:40%)
⑨ 地方物业税LPT = 按Revenue 2022分档查表(€90 to €1,035+)
⑩ 净年收入 = 有效年租金 - 管理费 - 维修费 - 保险费 - 所得税 - LPT
⑪ 净收益率 = 净年收入 / 房产价格 × 100%
LPT分档(Revenue 2022重新估值):
| 房产估值 | 年度LPT |
|---|---|
| ≤ €200,000 | €90 |
| €200,001–€262,500 | €225 |
| €262,501–€350,000 | €315 |
| €350,001–€437,500 | €405 |
| €437,501–€525,000 | €495 |
| €525,001–€612,500 | €585 |
| €612,501–€700,000 | €675 |
| €700,001–€787,500 | €765 |
| €787,501–€875,000 | €855 |
| €875,001–€962,500 | €945 |
| €962,501–€1,050,000 | €1,035 |
| > €1,050,000 | 房价 × 0.1029% |
M7:犯罪评分标准化
问题:不同郡人口相差悬殊,都柏林人口150万,莱特里姆只有4万人。如果直接比较犯罪总数,都柏林会显得极不安全。
解决方案:将犯罪总数转化为每千人犯罪率:
每千人犯罪率 = 年均犯罪记录数 / 人口 × 1000
注意:爱尔兰警察分区(Garda Division)不完全对应26个郡,以下警察区跨越两个郡,按人口比例估算拆分:
- Cavan/Monaghan
- Sligo/Leitrim
- Roscommon/Longford
- Laois/Offaly
- Kilkenny/Carlow
M8:价格增长率计算
基准年选择:2013年是2008年金融危机后的房价谷底,以此为基准计算"复苏以来的增长"。
增长率 = (2025年中位价 - 2013年中位价) / 2013年中位价 × 100%
注意:某些人口稀少的郡在2013年可能样本量不足,使用2014年或2015年作为起点。
M9:HAP承租能力指数
含义:将市场租金与HAP补贴上限做对比,衡量政府补贴与市场的脱节程度。
HAP覆盖率 = HAP家庭限额 / 市场平均两居室租金 × 100%
如果覆盖率低于70%,意味着接受HAP租客的房东收入远低于市场价,此类租客对投资者吸引力下降。
8. 国际化(双语)系统
工作原理
网站支持中文(简体)和英文切换。实现方式是两套并行方案,分别针对不同类型的内容:
方案A:i18n.js(用于简短UI文本)
所有页面引用 /i18n.js?v=5(版本号用于缓存刷新)。
HTML中用属性标记需要翻译的元素:
<span data-i18n="nav.report">Report</span>
JS启动时调用 applyLang() 把翻译文本填入这些元素。点击语言按钮时触发 langchange 事件,所有监听这个事件的组件更新显示。
方案B:.en-text / .zh-text CSS类(用于长段落文本)
about.html中大量中英文并排内容使用这种方式:
<p>
<span class="en-text">This is the English text.</span>
<span class="zh-text">这是中文文本。</span>
</p>
CSS规则控制显示:
html[lang="zh-CN"] .en-text { display: none; }
html[lang="zh-CN"] .zh-text { display: inline; }
/* 默认(英文)下相反 */
i18n.js命名空间
| 命名空间 | 用于页面 | 说明 |
|---|---|---|
nav.* |
所有页面 | 导航链接文本 |
footer.* |
所有页面 | 页脚免责声明(不同页面用不同key) |
ix.* |
index.html | 首页所有文本 |
q.* |
query.html | 收益率查询页所有文本 |
c.* |
calculator.html | 净回报计算器所有文本 |
m.* |
mortgage.html | 按揭市场页所有文本 |
mp.* |
map.html | 地图页所有文本 |
9. SEO 优化
每个页面的SEO标签配置
所有6个页面均配置了:
<title>:关键词丰富的页面标题<meta name="description">:160字以内的摘要<meta name="keywords">:关键词列表<link rel="canonical">:规范URL(防止重复内容)<link rel="sitemap">:指向/sitemap.xml<link rel="alternate" hreflang="en-IE">:语言区域标记<meta name="geo.region" content="IE">:地理位置标记- Open Graph标签(og:type, og:title, og:description, og:image + 尺寸 + 类型, og:locale, og:site_name):用于Facebook/LinkedIn分享
- Twitter Card标签:用于Twitter分享
- JSON-LD结构化数据:帮助Google理解页面内容类型
结构化数据类型
| 页面 | JSON-LD类型 | 含义 |
|---|---|---|
| index.html | WebSite + Dataset + FAQPage | 数据集+常见问题 |
| query.html | WebApplication | 交互工具 |
| calculator.html | WebApplication | 交互工具 |
| mortgage.html | Dataset | 数据集 |
| map.html | WebApplication | 交互工具 |
| about.html | Article | 文章页 |
sitemap.xml
包含6个URL,按重要性设置优先级:
/:1.0(最重要)/query.html:0.9/mortgage.html:0.9/calculator.html:0.9/map.html:0.8/about.html:0.7
10. 部署与运维
部署方式
本地修改文件后,用SCP命令直接上传到服务器:
SSHPASS='Yfpwd,0312.' sshpass -e scp -o StrictHostKeyChecking=no \
文件名.html root@91.99.111.153:/opt/www/irelandproperty/
上传后Nginx立即生效,无需重启服务。
缓存刷新策略
JavaScript文件(特别是i18n.js)浏览器会缓存。更新i18n.js后,需要在所有HTML文件的引用处修改版本号:
<!-- 旧版本 -->
<script src="/i18n.js?v=4"></script>
<!-- 更新后 -->
<script src="/i18n.js?v=5"></script>
当前版本:v=5
数据更新流程
1. 下载最新PPR数据(PSRA网站,CSV格式)
2. 用Python导入PostgreSQL(property_sales表,只追加不修改)
3. 运行分析SQL/Python脚本,重新生成JSON文件
4. 上传新JSON文件到 /data/ 目录
5. 如有新字段或指标,更新相应HTML和i18n.js
6. 缓存刷新(如需要,更新脚本版本号)
11. 关键数据结论
房价增长(2013-2025)
- 全国中位价增长:+134%
- 增长最快:Laois(+220%)、Westmeath(+206%)
- 增长最慢:Donegal(+90%),全国唯一低于+100%的郡
- 都柏林:+106%,排名第24(倒数第3)——高基数效应
2025年租金收益率排名(毛收益率)
| 排名 | 郡 | 毛收益率 | 中位成交价 |
|---|---|---|---|
| 1 | Longford | 7.05% | ~€190k |
| 2 | Leitrim | ~6.8% | 低价 |
| 3 | Roscommon | ~6.5% | 低价 |
| 7 | Dublin | ~5.5% | ~€497k |
| 26 | Kildare | 4.28% | 高价 |
注意:以上毛收益率约为实际到手净收益率的2倍(扣除费用、空置、税后)
按揭市场(2025年Q4)
- 首次置业者平均贷款:€323,871
- 首置占按揭总量:约62%(市场主力买家是刚需)
- 当前ECB利率:2.15%(2024年底开始降息)
- 当前爱尔兰新增按揭平均利率:3.50%
都柏林邮区最贵两居室租金(2025Q2)
| 邮区 | 2床月租 |
|---|---|
| Dublin 2(市中心) | €2,483 |
| Dublin 4(南边高档区) | 类似价位 |
| Dublin 1 | €2,050(1床) |
附录:文件清单
/opt/www/irelandproperty/
├── index.html 首页(PPR分析报告)
├── query.html 收益率查询工具
├── calculator.html 净回报计算器
├── mortgage.html 爱尔兰按揭市场
├── map.html 郡级数据地图
├── about.html 数据来源与方法说明
├── i18n.js 中英双语翻译(当前v=5)
├── favicon.svg 网站图标(绿色"IP"字样)
├── og-image.png 社交分享缩略图(1200×630px)
├── sitemap.xml 搜索引擎站点地图
└── data/
├── county_stats.json 26个郡综合数据(核心文件)
├── dublin_postcodes.json 22个都柏林邮区数据
├── rent_trends.json 41个地点季度租金趋势
├── ber_county.json 55个地区BER能源评级
├── cso_population.json 26个郡人口数据
├── cso_vacancy.json 26个郡空置率
├── cso_completions.json 26个郡住宅竣工量
├── cso_planning.json 26个郡规划许可量
├── cso_crime.json 26个郡犯罪统计
├── hap_county.json 26个郡HAP租金补贴上限
├── ida_fdi.json 26个郡外资吸引力数据
├── mortgage_data.json 爱尔兰按揭历史数据
├── mortgage_rates.json ECB和爱尔兰按揭利率历史
└── region_matrix.json 5大区域分组数据
文档生成日期:2026-03-31 | 如有问题请联系:imfan.yang@gmail.com